514 Stimmen

Unterschied zwischen @Before, @BeforeClass, @BeforeEach und @BeforeAll

Was ist der Hauptunterschied zwischen

  • @Before und @BeforeClass
    • und in JUnit 5 @BeforeEach und @BeforeAll
  • @After und @AfterClass

Laut der JUnit Api wird @Before in folgendem Fall verwendet:

Wenn Tests geschrieben werden, ist es üblich festzustellen, dass mehrere Tests ähnliche Objekte benötigen, die erstellt werden müssen, bevor sie ausgeführt werden können.

Während @BeforeClass zur Herstellung einer Datenbankverbindung verwendet werden kann. Aber könnte nicht auch @Before dasselbe tun?

1voto

Hitesh Garg Punkte 1181

Der grundlegende Unterschied zwischen all diesen Annotationen ist wie folgt -

  1. @BeforeEach - Wird verwendet, um einen gemeinsamen Code vor jedem Testmethodenaufruf (z. B. setUp) auszuführen. Analog zu JUnit 4's @Before.
  2. @AfterEach - Wird verwendet, um einen gemeinsamen Code nach jedem Testmethodenaufruf (z. B. tearDown) auszuführen. Analog zu JUnit 4's @After.
  3. @BeforeAll - Wird einmal pro Klasse vor der Ausführung eines beliebigen Tests ausgeführt. Analog zu JUnit 4's @BeforeClass.
  4. @AfterAll - Wird einmal pro Klasse nach der Ausführung aller Tests ausgeführt. Analog zu JUnit 4's @AfterClass.

All diese Annotationen sowie deren Verwendung sind auf Codingeek - Junit5 Test Lifecycle definiert.

0voto

user3452276 Punkte 1

@BeforeClass wird vor dem gesamten Testpaket ausgeführt, während @Before vor jedem Test ausgeführt wird, und @BeforeClass einmal vor dem gesamten Testfall. Wenn Ihre Testklasse zehn Tests hat, wird der @Before-Code zehnmal ausgeführt, aber @BeforeClass wird nur einmal ausgeführt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X