我目前有一个抽象的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
和 WhitespaceTest
。我如何实现这一层? 最佳答案
这是我当前(天真的)解决此问题的方法:
在BaseTest
中:
@Test
public void testNewline() {
WhitespaceTest wt = new WhitespaceTest(expected, actual);
wt.testNewline();
}
这行得通,但是有很多重复的代码。对于
@Test
中的每个WhitespaceTest
,必须在@Test
中创建另一个BaseTest
。