java - test - Suites multicapa parametrizadas
junit testwith (1)
Aquí está mi solución actual (ingenua) a este problema:
Dentro de BaseTest
:
@Test
public void testNewline() {
WhitespaceTest wt = new WhitespaceTest(expected, actual);
wt.testNewline();
}
Esto funciona, pero hay un montón de código duplicado. Para cada @Test
en WhitespaceTest
, debe crear otro @Test
en BaseTest
.
Actualmente tengo una clase abstracta de BaseTest
que contiene varios @Test
genéricos.
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
extiende BaseTest
, donde defino varios casos de prueba.
@RunWith(Parallelized.class)
public class SomeTest extends BaseTest {
// @Parameters (test cases) goes here...
}
Tengo muchas pruebas que amplían BaseTest
, que luego pongo en una Suite
en RunAllTests
.
@RunWith(Suite.class)
@SuiteClasses({ SomeTest.class, AnotherTest.class, etc... })
public class RunAllTests { }
Entonces, digamos que quiero agregar más @Test
''s, sin embargo, quiero @Test
en una clase diferente.
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...
}
Parece que necesito otra "capa" de Suites
para ejecutar cada prueba, de modo que para cada clase en RunAllTests
, ejecuto BaseTest
AND WhitespaceTest
. ¿Cómo hago para implementar esta capa?