我试图找到一种方法,允许我只使用命令行和java从JUnit类运行单个测试.
我可以使用以下方法从类中运行整个测试集:
java -cp .... org.junit.runner.JUnitCore org.package.classname
Run Code Online (Sandbox Code Playgroud)
我真正想做的是这样的事情:
java -cp .... org.junit.runner.JUnitCore org.package.classname.method
Run Code Online (Sandbox Code Playgroud)
要么:
java -cp .... org.junit.runner.JUnitCore org.package.classname#method
Run Code Online (Sandbox Code Playgroud)
我注意到有可能使用JUnit注释来实现这一点,但我宁愿不手动修改测试类的源代码(尝试自动化).我也看到Maven可能有办法做到这一点,但如果可能的话我想避免依赖Maven.
所以我想知道是否有办法做到这一点?
我正在寻找的要点:
如果我有一个包含多个测试的测试套件,当我尝试从代码编辑器的上下文菜单或JUnit视图运行单个单元测试时,它似乎坚持始终运行整个套件,而不是单一测试.有没有办法禁用更改此行为,以便我可以要求运行它,只有那个,测试.
JUnit 4.8包含一个名为"Categories"的新功能,允许您将某些类型的测试组合在一起.这非常有用,例如,为慢速和快速测试分别进行测试.我知道JUnit 4.8发行说明中提到的内容,但是想知道我如何实际运行所有使用某些类别注释的测试.
JUnit 4.8发行说明显示了一个示例套件定义,其中SuiteClasses注释选择要运行的特定类别的测试,如下所示:
@RunWith(Categories.class)
@IncludeCategory(SlowTests.class)
@SuiteClasses( { A.class, B.class }) // Note that Categories is a kind of Suite
public class SlowTestSuite {
// Will run A.b and B.c, but not A.a
}
Run Code Online (Sandbox Code Playgroud)
有谁知道如何在SlowTests类别中运行所有测试?您似乎必须拥有SuiteClasses注释...