相关疑难解决方法(0)

如何在JUnit 4中动态创建测试套件?

我想使用JUnit 4创建一个junit测试套件,其中要包含的测试类的名称在运行测试套件之前是未知的.

在JUnit 3中,我可以这样做:

public final class MasterTester extends TestCase
{
  /**
   * Used by junit to specify what TestCases to run.
   * 
   * @return a suite containing what TestCases to run
   */
  public static TestSuite suite() {
    TestSuite suite = new TestSuite();

    for(Class<?> klass : gatherTestClasses()) {
      suite.addTestSuite(klass);
    }

    return suite;
  }
}
Run Code Online (Sandbox Code Playgroud)

并让该gatherTestClasses()方法处理确定要运行的测试类.

在JUnit 4中,文档说使用注释:@SuiteClasses({TestClass1.class, TestClass2.class...})构建我的测试套件.有很多SO答案显示如何做到这一点.不幸的是,我看到的示例似乎不允许传递动态生成的TestClasses列表.

这个答案建议我必须继承BlockJUnit4ClassRunner我不想做的事情.

动态指定的测试套件似乎必须在某个地方的JUnit 4中.有谁知道在哪里?

java junit junit4

51
推荐指数
4
解决办法
5万
查看次数

您是否可以从命令行在包中运行所有JUnit测试而无需明确列出它们?

如果测试类和JUnit都在类路径上,则可以从命令行运行JUnit测试,如下所示:

java org.junit.runner.JUnitCore TestClass1 TestClass2
Run Code Online (Sandbox Code Playgroud)

现在,有没有办法在包(和子包)中运行所有测试?

我正在寻找类似的东西

java org.junit.runner.JUnitCore com.example.tests.testsIWantToRun.*
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法(不涉及maven或ant)?

java junit command-line unit-testing

14
推荐指数
1
解决办法
9911
查看次数

标签 统计

java ×2

junit ×2

command-line ×1

junit4 ×1

unit-testing ×1