Attualmente ho una classe astratta BaseTest
che contiene diversi generici @Test
.Suite a più livelli parametrizzate
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
estende BaseTest
, dove definisco vari casi di test.
@RunWith(Parallelized.class)
public class SomeTest extends BaseTest {
// @Parameters (test cases) goes here...
}
Ho molte prove che si estende BaseTest
, che poi messo in un Suite
in RunAllTests
.
@RunWith(Suite.class)
@SuiteClasses({ SomeTest.class, AnotherTest.class, etc... })
public class RunAllTests { }
Quindi diciamo che voglio aggiungere più @Test
's, tuttavia voglio contenerli in una classe diversa.
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...
}
Risulta ho bisogno di un altro "strato" di Suites
per eseguire ogni singola prova, in modo che per ogni classe in RunAllTests
, corro il BaseTest
EWhitespaceTest
. Come posso implementare questo livello?
Non capisco. Perché non puoi semplicemente aggiungere 'WhitespaceTest' alla tua attuale suite? Ovviamente hai più suite – dkatzel
Voglio eseguire ogni test in 'WhitespaceTest' per ogni' BaseTest' nella suite corrente. –
Sembra più un problema di ereditarietà che un problema di suite – dkatzel