Подивіться звіт JUnit. JUnit вже організований пакетом. У кожному пакеті є (або може бути) клас TestSuite, кожен з яких у свою чергу запускає декілька TestCases. Кожна TestCase може мати кілька методів тестування формиpublic void test*()
, кожен з яких фактично стане екземпляром класу TestCase, до якого вони належать. Кожен метод тестування (екземпляр TestCase) має ім'я та критерії пропуску / відмови.
Що вимагає моє управління - це концепція індивідуального тестування елементів , кожен з яких повідомляє про власні критерії проходження / відмови. Відмова будь-якого етапу тесту не повинна перешкоджати виконанню наступних етапів випробувань.
Раніше розробники тестів в моєму положенні організовували заняття TestCase в пакети, що відповідають частинам продукту, що перевіряється, створювали клас TestCase для кожного тесту і робили кожен метод тестування окремим "кроком" у тесті, комплектується власними критеріями пропуску / відмови у виході JUnit. Кожен TestCase - це окремий "тест", але окремі методи, або тестові "етапи" в межах TestCase, повинні проходити у визначеному порядку.
Методи TestCase були етапами TestCase, і конструктори тестів отримали окремий критерій проходження / відмови на крок випробування. Тепер тестові кроки змішані, а тести (звичайно) провалюються.
Наприклад:
Class testStateChanges extends TestCase
public void testCreateObjectPlacesTheObjectInStateA()
public void testTransitionToStateBAndValidateStateB()
public void testTransitionToStateCAndValidateStateC()
public void testTryToDeleteObjectinStateCAndValidateObjectStillExists()
public void testTransitionToStateAAndValidateStateA()
public void testDeleteObjectInStateAAndObjectDoesNotExist()
public void cleanupIfAnythingWentWrong()
Кожен метод тестування затверджує та повідомляє про свої окремі критерії проходження / відмови. Складаючи це на "один великий метод тестування" заради замовлення, втрачається деталізація критеріїв проходження / відмови кожного "кроку" у зведеному звіті JUnit. ... і це засмучує моїх менеджерів. Зараз вони вимагають іншої альтернативи.
Чи може хто-небудь пояснити, як JUnit з замовленим методом тестування підтримує окремі критерії проходження / відмови кожного послідовного етапу тестування, як пояснено вище та вимагається моїм керівництвом?
Незалежно від документації, я вважаю це серйозним регресом в рамках JUnit, що ускладнює життя багатьом розробникам тестів.