我目前有一个抽象的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

09-25 20:41