我无法回想起如何使用JUnit3 TestSuite
并在谷歌搜索后发现了这个
public class MyTestsuite extends TestSuite {
public static Test suite() {
final TestSuite s = new TestSuite();
s.addTestSuite(Test1.class);
s.addTestSuite(Test2.class);
return s;
}
}
它似乎有用,但对我来说看起来很奇怪:
public class MyTestsuite extends AbstractTestSuite {
@Override
public void suite() {
add(Test1.class);
add(Test2.class);
}
}
基本上,我很好奇,如果在我的第一个例子中这样做真的是要走的路。此外,我想知道这样的界面背后可能有哪些设计决定。
这也有效,可能有点不那么奇怪:
public class MyTestsuite extends TestSuite {
MyTestsuite() {
super(Test1.class, Test2.class);
}
public static Test suite() {
return new TestSuite();
}
}
答案 0 :(得分:3)
如果您想构建测试套件并按类引用它们,则使用第一个示例。
您的第二个示例不遵循JUnit 3模式来定义套件,如JUnit 3 cookbook中所述,讨论了static suite
使用的TestRunner
方法的用法。
TestRunner
课程也discusses its use in its Javadocs:
如果此类[a
Test
class]定义静态suite
方法,则将调用它并返回测试。
答案 1 :(得分:1)
在第一个示例中,最好返回套件子类MyTestsuite
,而不是junit.framework.TestSuite
,这样在IDE中单击套件时看到该类而不是{{ 1}}
junit.framework.TestSuite
由于返回的套件为空,您的第三个示例不起作用,此处一个必须返回套件子类。另请注意,正在使用的构造函数仅存在于Junit public class MyTestsuite extends TestSuite {
public static Test suite() {
final MyTestsuite s = new MyTestsuite();
s.addTestSuite(Test1.class);
s.addTestSuite(Test2.class);
return s;
}
}
3.8.2