Ich schrieb eine Schnittstelle MyInterface
, die von verschiedenen Implementierungen implementiert werden wird.Generic JUnit Test Klasse
Ich schrieb auch eine Klasse MyInterfaceTest
, die generische Testmethoden enthält, die alle Implementierer verwenden sollten, um ihre Implementierungen zu testen.
Ich weiß nur nicht, wie man es als JUnit-Test arbeiten lassen kann.
Derzeit habe ich so etwas wie dieses:
public class MyInterfaceTest {
private static MyInterface theImplementationToTest = null;
@BeforeClass public static void setUpBeforeClass() throws Exception {
// put your implementation here:
theImplementationToTest = new Implementation(...);
}
@AfterClass public static void tearDownAfterClass() throws Exception {
theImplementationToTest = null;
}
@Test public void test1() { /* uses theImplementationToTest */ }
@Test public void test2() { /* uses theImplementationToTest */ }
}
Ich kann die statische Methode setUpBeforeClass
, da die Initialisierung jeder Implementierung viel Zeit in Anspruch nimmt, so will ich es einmal für alle Tests initialisieren.
Mit dieser Version des Tests müssen die Implementierer den Code setUpBeforeClass
ändern und ihre eigene Implementierung einfügen.
Ich bin mir sicher, dass es eine andere Möglichkeit gibt, MyInterfaceTest
zu schreiben, so dass die Implementoren es nur erben oder einen Parameter senden müssen und den Code nicht ändern müssen. Allerdings habe ich in JUnit nicht genug Erfahrung, um es zum Laufen zu bringen. Können Sie mir bitte zeigen, wie das geht?
Wie hilft das das ursprüngliche Problem zu lösen? –
Was ist das ursprüngliche Problem? –
Wie wird ein statisches Setup/Teardown mit einer Implementierung verwendet, die je nach Unterklasse variiert? Wie in meiner Antwort beschrieben. –