我目前有一个抽象的 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
的测试,然后我将其放入 RunAllTests
的 Suite
中。
@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
。我该如何着手实现这一层?
最佳答案
这是我目前(天真的)解决这个问题的方法:
在 BaseTest
中:
@Test
public void testNewline() {
WhitespaceTest wt = new WhitespaceTest(expected, actual);
wt.testNewline();
}
这行得通,但是有很多重复代码。对于 WhitespaceTest
中的每个 @Test
,您必须在 BaseTest
中创建另一个 @Test
。
关于java - 参数化多层套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33420561/