Wie funktioniert assumeTrue() Arbeit in JUnit

Ich bin auf der Suche nach einigen Validierung, wie Assume.assumeTrue() arbeitet in JUnit. Ich möchte es in einer @BeforeClass Methode, so dass ich vermeiden kann, läuft meine test-suite, wenn eine Bedingung nicht erfüllt.

Aber ich Frage mich, wie die Natur der Methode. Wenn assumeTrue erhält einen parameter mit einem falschen Wert, oder tut es das überspringen der rest der Methode (die das kommentierte mit @BeforeClass) oder er führt, die den restlichen Anweisungen.

Ich bin auch neugierig, von anderen Auswirkungen es haben könnte, für Methoden, annotiert mit:

@After

@Before

@AfterClass

Edit:

Nachdem Sie durch eine hübsche basic-test, wenn assumeTrue(false) nie ausgeführt, dann wird der rest der Methode wird ignoriert, sowie alle Methoden, annotiert mit @Test @After oder @Before.

Mir war es ein wenig überraschend, dass der rest der Methode übersprungen wurde, sowie die Tatsache, dass es auch ignoriert @Before und @After neben @Test wenn assumeTrue in der @BeforeClass Methode. Die Dokumentation ist nicht angegeben, die Art von Verhalten (was ich geprüft, bevor die Frage).

Edit2: Mit assumeTrue() im @BeforeClass Methode ist sehr plausibel, wie kann es sein, Umwelt-Variablen (D. H. die build - /test-Maschine ist, betont, für die Ressourcen), die Sie möchten vielleicht prüfen, bevor Sie Ihren test-suite. Dies kann helfen, vermeiden, sich testen Ausfälle (wie z.B. timeouts), verursacht durch ein langsames system.

So, ich bin noch nicht sicher, warum dies ist immer downvoted so schwer...

Den test, ich lief es durch die so aussah

@BeforeClass
public static void beforeClassMethod()
{
  System.out.println("BeforeClass assume");
  Assume.assumeTrue(false);
  System.out.println("AfterClass assume");
}
@Before
public void beforeMethod()
{
  System.out.println("Before");
}
@Test
public void testMethod()
{
  System.out.println("Test");
}
@After
public void afterMethod()
{
  System.out.println("After");
}
@AfterClass
public static void afterClassMethod()
{
  System.out.println("AfterClass");
}


Output:

BeforeClass assume
AfterClass
  • Haben Sie versucht, das schreiben und ausführen eines testcase, die verwendet werden assumeTrue()?
  • junit.sourceforge.net/javadoc/org/junit/Assume.html
  • Warum sind Sie der Planung bis zur Nutzung assumeTrue in der teardown-Methoden(@after, @afterclass)?
  • Es wirft eine exception, also ja, es wird abgebrochen.
  • Ich bin nicht, ich wusste nur nicht, wenn es auch ignoriert die teardown-Methoden oder nicht
InformationsquelleAutor | 2015-05-07
Schreibe einen Kommentar