2014-11-18 1 views
0

У меня есть сценарий, в котором некоторые тесты могут вызывать разные исключения.JUnit - Исключить в разделе @After

@Test 
public void addDevice(){ 
    device.addDevice(); // this may throw exception 1 
    device.verifyStatus("Ready"); 
    device.open(); // this may throw exception 2 
    device.verifyStatus("Open"); 
} 

@Test 
public void otherTest(){ 
    device.act(); // this may throw exception 3 
    device.verifyStatus("Ready"); 
} 

@After 
public void tearDown(){ 
    // handle the exception here 
} 

Я хочу, чтобы обрабатывать эти исключения в разделе @After без упаковки тест с try, catch.

Возможно ли это?

ответ

1

Нет, это невозможно.

Вы все равно можете обернуть тест с помощью блока try-catch. Затем вы можете сохранить исключение в переменную-член вместо обработки. В методе @After вы можете проверить, является ли исключение нулевым или нет.

+0

Уже думал об этом, но у меня есть сотни тестов, и я стараюсь избегать этого решения. –

+0

Как сделать эту логику в методе '' @ Before'' в абстрактном классе? Возможно ли, чтобы ваши тестовые классы наследовали этот класс? – nrainer

+0

Не уверен, что я слежу за тобой ... Как может @ Помогать мне? –

0

Из-за вашего комментария, что у вас есть сотни тестов с этим кодом, я предполагаю, что это настроенная логика, которая должна фактически быть в методе @Before.

Таким образом, вы можете указать внешнее правило ресурса с до и после метода: https://github.com/junit-team/junit/wiki/Rules#externalresource-rules

В before() методе вы выполняете установленные вверх, поймать и сохранить исключения и в методе after() вы справиться с ними.

Но имеет ли смысл обработать исключение позже? Можете ли вы успешно запустить тестовые примеры, если настройка не удалась?

Смежные вопросы