Каково фактическое использование «fail» в тестовом примере JUnit?Каково фактическое использование «fail» в тестовом примере JUnit?
ответ
Некоторые случаи, когда я нашел его полезным:
- маркировать тест, который является неполным, поэтому он не откажет и предупреждает вас, пока вы можете закончить его
- убедившись, что генерируется исключение:
try{ // do stuff... fail("Exception not thrown"); }catch(Exception e){ assertTrue(e.hasSomeFlag()); }
Примечание:
С JUnit4, есть более элегантный способ проверить, что исключение бросают: Используйте аннотацию @Test(expected=IndexOutOfBoundsException.class)
Однако, это не будет работать, если вы также хотите проверить исключение, тогда вам все равно нужно fail()
.
Я думаю, что обычный случай использования - это назвать его, когда исключение не было выброшено в отрицательный тест.
Что-то вроде следующего псевдокода:
test_addNilThrowsNullPointerException()
{
try {
foo.add(NIL); // we expect a NullPointerException here
fail("No NullPointerException"); // cause the test to fail if we reach this
} catch (NullNullPointerException e) {
// OK got the expected exception
}
}
Если вы не проверяете что-либо в блоке catch, вы можете использовать аннотацию метода @ExpectedException (NullNullPointerException.class), чтобы объявить, что вы ожидаете исключения (специального вида). – FrVaBe
позволяет сказать, что вы пишете тестовый пример для -ve потока, где код тестируемым должен вызвать исключение
try{
bizMethod(badData);
fail(); // FAIL when no exception is thrown
} catch (BizException e) {
assert(e.errorCode == THE_ERROR_CODE_U_R_LOOKING_FOR)
}
Это, как я использую метод обесточивания.
Есть три состояния, что ваш тест может закончиться в
- Зачет: Функция испытуемой успешно выполнена и возвращена данные, как ожидаются
- Не Сдали: Функция испытуемой успешно выполнена, но возвращаемые данные не как ожидалось
- Ошибка: функция не выполнить успешно, и это не было
предназначено (В отличие от отрицательных тестовых случаев, ожидающих возникновения исключения ).
Если вы используете eclipse, три состояния обозначаются зеленым, синим и красным маркерами соответственно.
Я использую операцию отказа для третьего сценария.
например. : public Integer add (integer a, Integer b) {return new Integer (a.intValue() + b.intValue())}
- Passed Дело: а = новый Interger (1), б = новое целое (2) и функция возвращается 3
- Не Passed Дело: а = новый Interger (1), б = новый Integer (2) и функция вернула значение SOEM, кроме 3
- Failed случая: = NULL, б = нуль и функция бросает NullPointerException
Если вы посмотрите на исходный код JUnit, вы увидите, что в утверждениях используется 'fail()'. –
Я использовал его в том случае, когда что-то возможно, пошатнулись в моем методе @Before.
public Object obj;
@Before
public void setUp() {
// Do some set up
obj = new Object();
}
@Test
public void testObjectManipulation() {
if(obj == null) {
fail("obj should not be null");
}
// Do some other valuable testing
}
Да, предварительные условия тестирования хороши. Однако, если вы хотите убедиться, что метод '@ Before' преуспел, вероятно, лучше проверить его непосредственно в этом методе. В качестве бонуса, по крайней мере, JUnit и TestNG даже сообщают о другом сбое ошибок из методов '@ Before' /' @ After', поэтому можно увидеть, что проблема не была в самом тесте. – sleske
Я, например, использовать fail()
указать тесты, которые еще не завершены (это бывает); в противном случае они будут демонстрироваться как успешные.
Возможно, это связано с тем, что я не знаю какой-то неполной() функциональности, которая существует в NUnit.
просто использовать:
org.junit.Assert.fail("Exception expected");
Наиболее важный для использования случай, вероятно, проверка исключений.
В то время как junit4 содержит expected element для проверки того, произошло ли исключение, похоже, что он не является частью нового junit5. Другим преимуществом использования fail()
по сравнению с expected
является то, что вы можете комбинировать его с finally
, позволяющим очищать тестовый корпус.
dao.insert(obj);
try {
dao.insert(obj);
fail("No DuplicateKeyException thrown.");
} catch (DuplicateKeyException e) {
assertEquals("Error code doesn't match", 123, e.getErrorCode());
} finally {
//cleanup
dao.delete(obj);
}
Как указано в другом комментарии. Испытание на провал до тех пор, пока вы не сможете закончить его реализацию, также кажется разумным.
- 1. Thread.sleep в тестовом примере JUnit
- 2. Каково фактическое использование jquery?
- 3. Как сравнить файлы в тестовом примере JUnit?
- 4. Я запутался в этом тестовом примере JUnit
- 5. Чтение tomcat server.xml в тестовом примере junit
- 6. Проверка тайм-аута в тестовом примере JUnit
- 7. Заказав порядок выполнения в тестовом примере JUnit
- 8. Каково фактическое использование секретного ключа?
- 9. Каково фактическое использование .so файла в android?
- 10. Каково фактическое использование интерфейса в java?
- 11. Использование атрибутов в тестовом примере транспортира
- 12. Прочтите qdebug в тестовом примере?
- 13. Получить контекст тестового проекта в тестовом примере junit Android
- 14. Каково фактическое использование категорий вместо наследования?
- 15. Каково использование. Себя в этом примере ruby
- 16. Каково фактическое использование Oracle Application Express?
- 17. Использование случайного значения в тестовом классе JUnit
- 18. Использование if/switch/для условий в тестовом примере
- 19. ИнициализацияError на тестовом примере JUnit на Travis CI
- 20. Ошибка в тестовом примере MockMvc для контроллера
- 21. Каково фактическое значение cos 90?
- 22. Каково фактическое разрешение экрана iphone
- 23. Каково фактическое использование xml и json в веб-сервисе java?
- 24. Каково фактическое использование конструктора по умолчанию в java?
- 25. Изменить предел страницы в тестовом примере
- 26. Каково фактическое количество потоков в процессе Java?
- 27. Каково фактическое значение приоритета/уверенности в findbugs?
- 28. Каково фактическое значение «script» в php?
- 29. Каково фактическое значение префикса «!» В Swift?
- 30. Случайное время выполнения запроса в тестовом примере
Рассмотрите это сообщение в блоге об относительных достоинствах сбоя и ожидаемой аннотации: http://blog.jooq.org/2016/01/20/use-junits-expected-exceptions-sparingly/ – lbalazscs
@sleske ", если вы также хотите проверьте исключение, тогда вам все еще нужно fail() "- нет. ExpectedException - это путь, см. Https://github.com/junit-team/junit4/wiki/exception-testing – kraxor
@kraxor: Правда, не знал об этом, когда писал ответ (вероятно, это было даже не вокруг тогда). – sleske