Unterschied zwischen @Before, @BeforeClass, @BeforeEach und @BeforeAll
Was ist der Unterschied zwischen
@Before
und@BeforeClass
- und im JUnit-5
@BeforeEach
und@BeforeAll
- und im JUnit-5
@After
und@AfterClass
Entsprechend der JUnit Api @Before
im folgenden Fall:
Beim schreiben von tests, ist es üblich zu finden, dass mehrere tests müssen ähnliche Objekte, die erstellt wurden, bevor Sie ausgeführt werden können.
In der Erwägung, dass @BeforeClass
können verwendet werden, um eine Datenbank-Verbindung. Konnte aber nicht @Before
das gleiche tun?
InformationsquelleAutor der Frage user1170330 | 2013-11-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den code markiert
@Before
ausgeführt wird vor jedem test, während@BeforeClass
einmal ausgeführt, bevor die gesamte Testgruppe. Wenn Ihr test-Klasse hat zehn tests@Before
code ausgeführt werden, die zehn mal, aber@BeforeClass
wird nur einmal ausgeführt.Im Allgemeinen verwenden Sie
@BeforeClass
wenn mehrere tests brauchen, um zu teilen die gleichen rechenintensiv setup-code. Herstellen einer Datenbank-Verbindung fällt in diese Kategorie. Sie können verschieben Sie code aus@BeforeClass
in@Before
, aber Ihren test auch länger dauern kann. Beachten Sie, dass der code markiert@BeforeClass
wird als statische Initialisierer, daher wird es laufen, bevor die class-Instanz der test-fixture erstellt.In JUnit-5, die tags
@BeforeEach
und@BeforeAll
sind die äquivalente@Before
und@BeforeClass
in JUnit 4. Ihre Namen sind ein bisschen mehr bezeichnend, wenn Sie laufen, Locker interpretiert: "vor den einzelnen tests' und 'einmal vor allen tests'.InformationsquelleAutor der Antwort dasblinkenlight
Unterschied zwischen den einzelnen Anmerkung :
Meisten Anmerkungen, die in beiden Versionen sind die gleichen, aber wenig unterscheidet.
Referenz
Reihenfolge der Ausführung.
Gestrichelte box -> optional annotation.
InformationsquelleAutor der Antwort Joby Wilson Mathews