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

Chr*_*ian 14 java junit command-line unit-testing

如果测试类和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)?

Ken*_*ter 8

Junit允许您定义测试套件.每个套件都定义了一组测试,运行该套件会导致所有测试运行.我所做的是为每个包定义一个套件,列出该包的测试类以及任何子包的套件:

package com.foo.bar;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

import com.foo.bar.baz.Suite_baz;

@RunWith(Suite.class)
@Suite.SuiteClasses({
    ThisTest.class,
    ThatTest.class,
    TheOtherTest.class,
    Suite_baz.class,
})
public class Suite_bar {
}
Run Code Online (Sandbox Code Playgroud)

这不是完全没有用的.您必须构建套件并使用新的测试类手动更新它们.我想如果有人愿意的话,编写一个小程序来自动生成这些并不难.