2016-04-20 9 views
1

Ich habe eine seltsame Situation mit Jenkins ... Wir haben grade Gradle für ein Projekt bei meiner Arbeit verwendet und wenn ich die Tests lokal mit JUnit ausführen, ist alles in Ordnung. Wenn diese Tests jedoch von jenkins für die Builds von Zweig "A" ausgeführt werden, schlägt nur ein Test wegen einer Assertion fehl (immer der gleiche Test).Junit Test in einem Jenkins Gradle Build, aber nicht lokal

org.junit.ComparisonFailure: erwartet: "E [ZZ0530] Z", aber war: "E [SY5654] Z"

Es sieht aus wie das Mock nicht gespritzt wird, oder die mock ignoriert das "Wann" spöttische Aussage. Hier

ist der Test:

@Test 
public void testEvent() { 
    Date eventDateTime = TimeUtils.parseDate("2013-05-30 00:00:00"); 
    event.setEventDatetime(eventDateTime); 

    //Mocking the prefix return 
    Mockito.when(eventCodeHelperMock.getEventCodePrefixFromEvent(event)).thenReturn("EZZ"); 

    //Tested methode 
    eventWrapper.setSuffix("Z"); 

    // Event code = prefix + date + suffix 
    assertEquals("EZZ0530Z", event.getEventCode()); 
} 

Was ist eine Menge Fremde ist, dass, wenn ich einen Zweig „B“ von Ast zu schaffen „A“ alle Tests erfolgreich, wenn der Build auf jenkins erstellt wird.

Ich habe einige Nachforschungen angestellt und versucht, einen anderen Build zu erzwingen, den aktuellen Arbeitsbereich zu löschen und den Job neu zu erstellen, aber es hat nicht funktioniert.

Danke für Ihre Hilfe!

Antwort

0

Ich hatte ähnliche Probleme in der Vergangenheit und es war aufgrund der Reihenfolge, in der die Junits Tests laufen. Ein Test ändert beispielsweise den Status eines Objekts, aber Sie sehen die Auswirkungen nicht, bis die Tests in einer anderen Reihenfolge ausgeführt werden und die Tests unerwartet fehlschlagen. In der von Ihnen geposteten Frage gibt es nicht genügend Code, um festzustellen, ob dies definitiv der Fall ist, aber ich würde empfehlen, die Reihenfolge zu überprüfen, in der die Tests ausgeführt werden, und sich auch die Objekte anzusehen, die Sie verwenden ein Problem mit dem Status dieser Objekte, die "verschmutzt" sind.

+0

Danke für die schnelle Antwort, es hat wirklich geholfen! Ich arbeite tatsächlich mit schwerem Legacy-Code und dieser Test testet nicht einmal die aktuelle Klasse (es war nicht wirklich ein Unit-Test), es gab viele Singletons und nicht-injizierte Abhängigkeiten (die, wie du erwähnt hast, den Zustand verändert haben) der Objekte). Ich habe es entfernt und alles funktioniert gut! Danke noch einmal! –

+0

Kein Problem, froh, dass Sie es repariert haben – robjwilkins

Verwandte Themen