在JUnit3中,可以这样命名测试套件:
public static Test suite() {
TestSuite suite = new TestSuite("Some test collection");
suite.addTestSuite(TestX.class);
return suite;
}在JUnit4中有类似的方法吗?
谢谢。
编辑
谢谢,我真的成功了。我的问题是,是否有一种JUnit4等效的方法来指定测试套件的名称/描述,比如在JUnit3中使用“一些测试集合”。
一些背景:我正在将遗留代码中的junit测试转换为版本4,如果可能的话,我不想丢失任何信息。我很抱歉,我本应该在原来的问题上更具体一点。
发布于 2016-01-12 13:52:40
您可以使用Suite runner @RunWith(Suite.class)来完成这一任务。
@RunWith(Suite.class)
@SuiteClasses({Test1.class, Test2.class, TestX.class})
public class MySuite {}其中Test1、Test2、TestX包含您的测试
参考RunWith,套间
最新情况:
WRT改变了您的套房的实际描述,我不认为有什么方法可以做到这一点(如果我还没有看到)。您可以做的是使用自定义描述update2定义自己的运行程序。
@RunWith(DescribedSuiteRunner.class)
@SuiteClasses({Test1.class, Test2.class, TestX.class})
@SuiteDescription("Some test collection")
public class MySuite {}
public class DescribedSuiteRunner extends Suite {
// forward to Suite
public DescribedSuiteRunner(Class<?> klass, RunnerBuilder builder)
throws InitializationError {
super(klass, builder);
}
@Override
protected String getName() {
return getTestClass()
.getJavaClass()
.getAnnotation(SuiteDescription.class)
.value();
}
}
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface SuiteDescription {
String value();
}getName的默认实现只返回被测试类的名称
发布于 2016-01-12 13:39:32
是的,在JUnit 3.x中,必须专门命名JUnit方法。他们需要从单词test开始,这样JUnit才能将其作为测试用例运行。现在只需使用@Test注释:
@Test
public void thisIsMyTest() {
// test goes here
}同样,在JUnit4中,如果希望在调用该类中的所有测试之前或之后运行某些测试,则可以声明:
@Before
public void init() throws Exception {
System.out.println("Initializing...");
}
@After
public void finish() throws Exception {
System.out.println("Finishing...");
}JUnit3与JUnit4 这里和这里的进一步比较。
编辑:在布格特的评论之后,我发现我可能误解了你的意图。您可能在寻找@RunWith(Suite.class) --当一个类被@RunWith注释时,JUnit将调用其中注释的类,以便运行测试,而不是使用内置于JUnit中的运行程序。使用的完整示例是这里,tl;如下所示:
@RunWith(Suite.class)
@SuiteClasses({ FirstTest.class, SecondTest.class })
public class AllTests {
...
}https://stackoverflow.com/questions/34745080
复制相似问题