Я понимаю, что существует @Before
и @BeforeClass
, которые используются для определения приспособлений для @Test
. Но что я должен использовать, если мне нужны различные приспособления для каждого @Test
?
@Test
? @Test
?Я прошу лучшие практики здесь, так как оба решения не являются чистыми, по-моему. С первым решением я протестировал бы код инициализации. И со вторым решением я повредил бы "один тестовый класс для каждого класса" шаблон.
Советы:
Я бы посоветовал создать отдельный класс на основе различных необходимых вам устройств. Если у вас есть два разных прибора, вам нужно просто создать два разных класса (дайте им удобное имя). Но я бы подумал второй раз об этом, в частности о разнице в светильниках и о том, почему они разные. Может быть, вы находитесь на пути к своего рода интеграционному тесту вместо модульного?
Если вы уверены, что ваш прибор уникален для отдельного теста, тогда он принадлежит методу @Test
. Однако это не типично. Может случиться так, что какая-то его часть уникальна или вы неправильно параметризовали / извлекли ее, но обычно вы будете использовать много одних и тех же данных между тестами.
В конечном итоге приспособление является частью теста. Размещение фикстуры в @Before
было принято как шаблон xUnit, потому что тесты всегда:
и шаги 1 ( @Before
) и 4 ( @After
) многократно (по крайней мере частично) повторно используются в связанных тестах. Поскольку xUnit очень серьезно относится к независимости тестирования, он предлагает методы фиксации, гарантирующие, что они всегда будут запускаться и тестовые данные создаются / уничтожаются должным образом.