java - JUnit:在多个目标类上运行相同的测试

标签 java junit parametrized-testing

我正在尝试在 Java 简介类(class)中自动实现一种同时对多个学生的文件进行评分的方法。

假设满足以下条件,如何对文件夹中的所有文件运行相同的测试:

  • 所有文件都存在于同一文件夹中(无子文件夹)
  • 所有文件都有 .java 扩展名
  • 所有文件名都是重要的标识符
  • 每个文件中的代码都满足相同的要求
    SayHelloWorld
    |-bsmithSayHelloWorld.java
    |-athomasSayHelloWorld.java
    |-cjenkinsSayHelloWorld.java

我对 JUnit 很满意,但过去我只通过 IntelliJ 以单文件、笨拙的方式使用它。

这是一个我要测试的简单示例文件:

public class Main {

    public static void main(String[] args) {
        System.out.println(sayHello());
    }
    public static String sayHello(){
        return "hello Java";
    }
}

我真的希望能够对给定文件夹中存在的所有 .java 文件进行自动化单元测试,并将结果输出到我可以使用的东西(控制台、文件等)。

可能的输出可能如下所示:

bsmithSayHelloWorld helloWorldTest: pass
athomasSayHelloWorld helloWorldTest: fail
cjenkinsSayHelloWorld  helloWorldTest: pass

最佳答案

从 Java11 开始,您可以 run single java classes without compiling .

因此,如果您可以自由使用 Java 11,则可以 loop over the java files在具有给定输入的文件夹中,然后 check the program output against expectations.

使用许多其他脚本解决方案也可以实现同样的效果,例如 ant、make、gradle、python、ruby...

关于java - JUnit:在多个目标类上运行相同的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56369772/

相关文章:

java - maven运行testng测试时不执行BeforeGroups方法

java - BufferedReader() 构造函数的参数是抽象类的对象

java - 如何在 build.bnd 中定义具有可选分辨率的常见导入包

Java、EJB框架、RBAC

java - 自定义 JUnit 报告?

python - 如何将函数作为 pytest 参数化装置传递?

kotlin - 使用纯 Kotlin 函数作为 Junit5 方法源

java - 在 Jenkins 上构建时,单元测试没有重置上下文?

Java Mockito 模拟方法时出现 InvalidUseOfMatchersException

java - 是否可以参数化 @BeforeEach,即根据每个 @Test 给出的参数调用不同的 @BeforeEach?