ArTest

Hier mal eine kurze Idee zu einem Test Framework für JUnit, welches Reports ähnlich FIT erzeugen können sollte.

Erstmal die Testklasse :

public class AnSampleTest extends ASampleBase {

  @Test
  @EnableArTest
  public void testFails() throws Exception {

    Login.user("Reinar"); // Statische Methode

    isLoggedIn(); // Methode in der Basiklasse

    fastExit();
    noExit();

    assertEquals("fail", "here");
  }

  private void fastExit() {
    assertEquals("erwarte", "fehlschlag");
    assertEquals("same", "same");
  }

  @EnableArTest
  private void noExit() {
    assertEquals("erwarte", "fehlschlag");
    assertEquals("same", "same");
  }
}

An den Tests ist lediglich die Annotation @EnableArTest angefügt. Die Auswertung diesr übernimmt ein Aspeket, ist der nicht aktiv, passiert nichts. Bzw. der Tests schläg fehl :

junit.framework.ComparisonFailure: null expected:<[success]> but was:<[logged in]>
  at junit.framework.Assert.assertEquals(Assert.java:81)
  ...
  at de.bitnoise.sample.ASampleBase.isLoggedIn(ASampleBase.java:8)
  ...
  at de.bitnoise.sample.AnSampleTest.testFails(AnSampleTest.java:1)

Das war zu erwarten, da Login.user() einen Fehler wirft. Mit aktiviertem Aspekten läuft der Test komplett durch. Erst am Ende erzeugt er eine Ausgabe mit den aufgetretenen Fehlern :

SUCCESS : Login user
ERROR	  : Is logged in		Error was : null expected:<[success]> but was:<[logged in]>
ERROR	  : Fast exit		        Error was : expected:<[erwarte]> but was:<[fehlschlag]>
ERROR	  : Assert equals		Error was : expected:<[erwarte]> but was:<[fehlschlag]>
SUCCESS : Assert equals
ERROR	  : Assert equals		Error was : expected:<[fail]> but was:<[here]>

Wie man sehen kann wurden 'fast' alle Methoden durchgeführt obwohl mehrere Asserts schief gingen. Genauer gesagt: alle aufgetretenen AssertionErrors in Methoden welche mit @EnableArTest annotiert sind werden unterdrückt. Gut zu sehen ist das bei dem Aufruf der Methode fastExit und noExit. Letztere ist annotiert, es werden beide Asserts ausgegeben. Während bei fastExit() nur der erste Assert als Fehler gemeldet wird und der zweite Assert schon nicht mehr ausgeführt wird.

Btw. habe mal dieses minimal Sample auf github geschoben: http://github.com/RainerW/ArTest

Diskussion

Geben Sie Ihren Kommentar ein
KERPX
 
 
blog/273.txt · Zuletzt geändert: 2010/02/09 00:38 von rainerw
 
Falls nicht anders bezeichnet ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki