我目前有一个抽象的BaseTest
类,它包含几个通用的@Test
。
public abstract class BaseTest {
private String expected;
private String actual;
public BaseTest(String expected, String actual) {
this.expected = expected;
this.actual = actual;
}
public String methodToTest(String line) {
return line.trim();
}
@Test
public void testNull() {
assertNull(methodToTest(null));
}
// more @Tests...
}
SomeTest
扩展BaseTest
,我定义了各种测试用例。
@RunWith(Parallelized.class)
public class SomeTest extends BaseTest {
// @Parameters (test cases) goes here...
}
我有许多扩展BaseTest
的测试,然后我将其放入Suite
中的RunAllTests
。
@RunWith(Suite.class)
@SuiteClasses({ SomeTest.class, AnotherTest.class, etc... })
public class RunAllTests { }
所以我想说我想添加更多@Test
,但我希望将它们包含在另一个类中。
public class WhitespaceTest extends BaseTest {
public WhitespaceTest(String expected, String actual) {
super(expected, actual);
}
@Test
public void testNewline() {
assertEquals(expected, methodToTest(actual + "\n"));
}
// more @Tests...
}
看来我需要Suites
的另一个“图层”来运行每一个测试,因此对于RunAllTests
中的每个类,我运行BaseTest
AND WhitespaceTest
。我该如何实现这一层?
答案 0 :(得分:1)
这是我当前(天真)解决此问题的方法:
BaseTest
内:
@Test
public void testNewline() {
WhitespaceTest wt = new WhitespaceTest(expected, actual);
wt.testNewline();
}
这很有用,但是有很多重复的代码。对于@Test
中的每个WhitespaceTest
,您必须在@Test
中创建另一个BaseTest
。