2016-06-09 8 views
1

Wie kann ich die wiederholte Prüfung zu vermeiden, wenn ich den Einsatz eines Kindes Einheit in einem Integrationstest testen müssen ????Wie kann ich vermeiden, wiederholte Einsätze in Java-Tests

Anwendungsfall:

Ich habe eine Person Unternehmen (Mutter) und eine Telefoneinheit (Kind). Ich brauche ein Telefon zu bestehen, bevor eine Person bestehen bleiben, aber wenn ich eine Einheit mit vielen Kind habe, wird mein Test ein Monster von duplizierten Code seines !!!!

Ich brauche so etwas wie:

public class TestPerson { 

    public void should_insertPerson_and_find(){ 
     //I need to call should_insertPhone_and_find() to insert a Phone before insert people, because of dependency..... 
     //... run test 
    } 

} 

public class TestPhone { 

    public void should_insertPhone_and_find(){ 
     //... run test 
    } 

} 

jemand jede API für diese sugest? Kann JUnit das tun?

+0

Wenn alles, was Sie testen wollen sicher, dass das Kind Einheit richtig eingesetzt zu machen ist, warum dann können Sie mit einzelnen Unternehmen nicht das tun? Warum müssen mehrere untergeordnete Entitäten überprüft werden? – K139

+0

Weil ich einen Integrationstest läuft und ich brauche die Beziehung zwischen Entitäten – Lucas

Antwort

-1

Der beste Weg, fand ich es der Artikel mkyong Abhängigkeit Test ist !! !!

Danke für die Antworten Jungs !!!

1

Grundsätzlich sind die Optionen sind:

  • haben eine gemeinsame abstrakte Superklasse mit einem @Before Methode, die die Initialisierung
  • Gebrauch macht JUnit Rules
  • einer Utility-Methode in einer anderen Klasse erstellen und die Methode von @Before Methoden aufrufen in beiden Klassen
+0

Mehr Kommentar zu testen, als Antwort – hd1

+0

@ HD1, wenn Sie denken so, Fahne es als „ein Kommentar sein sollte“. Mal sehen, ob die Mods übereinstimmen –

1

Jeder Test sollte einfach zu lesen bleiben. Hier ist, was ich vorschlagen.

// given 
cleanTestPersonsAndPhones(); 
Phone tphone = createTestPhone ("testShouldA"); 
Person tperson = createTestPerson(tphone); 

// when 
// should find tphone or tperson relation(s) 

// then 
// verify find result (s) 
cleanTestPersonsAndPhones(); 

Ich bin nicht Fan von @Before und Filterung durch Methodennamen verwenden, da Test weniger leicht neu zu lesen ...

Verwandte Themen