Я использую JUnit 4 для тестирования серверной системы с базой данных в памяти.Я использую @ BeforeClass @ До @ После и @AfterClass.
До сих пор отлично работаетуровень класса.
@ BeforeClass содержит настройку базы данных, которая выполняется медленно, но ее необходимо выполнить только один раз за сеанс тестирования.
@ Before просто вытирает планшет для следующего теста.Это довольно быстро.
Мои тесты выглядят примерно так:
class CompanyTest {
@BeforeClass
public static void beforeAll() throws Exception {
BeforeAll.run(); //Setup In Memory Database!!! Very time intensive!!!
}
@Before
public void beforeTest() throws Exception {
BeforeTest.run(); //Setup data in database. Relatively quick
}
@Test
public void testCreateCompany() throws Exception {
///...
}
@Test
public void testDeleteCompany() throws Exception {
///...
}
@Test
public void testAdminCompany() throws Exception {
///...
}
@After
public void afterTest() {
AfterTest.run(); //clear data
}
@AfterClass
public static void afterAll() throws Exception {
AfterAll.run(); //tear down database
}
}
До сих пор отлично работало на уровне класса.
Я могу щелкнуть правой кнопкой мыши (в Eclipse) для отдельного теста, и он будет запускаться @ BeforeClass , а затем @ Before .
Я также могу щелкнуть (в Eclipse) на самом классе, и он будет запускаться @ BeforeClass только один раз, а затем @ Before перед каждым тестом.
.... но как этот принцип распространяется на уровень Suite?
Я хочу запустить @BeforeClass перед всеми моими классами в Suite.Если я напишу свой Suite так:
@Suite.SuiteClasses({ CompanyTest.class, CustomerTest.class, SomeOtherTest.class, })
public class AllTests {
@BeforeClass
public static void beforeAll() throws Exception {
BeforeAll.run();
}
@AfterClass
public static void afterAll() throws Exception {
AfterAll.run();
}
}
... Мне нужно удалить @BeforeClass из всех моих тестовых классов.Это раздражает, потому что у меня много тестовых классов, и я не хочу удалять свой @BeforeClass, потому что я хочу тестировать их индивидуально.
В основном я говорю:
Существует ли простой способ (щелчок мыши в IDE) для тестирования тестов JUnit на (a) уровне метода, (b) уровне класса и (c) уровне комплекта, сохраняя при этом процессы setUp и tearDown уровня сеанса