В чем разница между объектом assert!= Null и Assert.assertNotNull(объект)?
В чем разница между следующими двумя блоками кода?
@Test
public void getObjectTest() throws Exception {
Object object;
//Some code
Assert.assertNotNull(object);
}
А ТАКЖЕ
@Test
public void getObjectTest() throws Exception {
Object object;
//Some code
assert object!=null;
}
Я понимаю что Assert.AssertNotNull
это вызов функции из TestNG и assert
является ключевым словом Java (введено в Java 1.4). Есть ли другие различия в этих двух? например, работа, производительность и т. д.
4 ответа
В первом случае используется класс Assert из вашей среды тестирования, и это правильный путь, поскольку TestNG будет сообщать об ошибке интеллектуальным способом.
Вы также можете добавить свое собственное сообщение к тесту:
Assert.assertNotNull(object, "This object should not be null");
Во втором случае используется assert
ключевое слово - это даст вам ошибку, но трассировка стека может быть или не может быть понятна с первого взгляда. Вы также должны знать, что утверждения НЕ могут быть включены.
Да, есть: ключевое слово assert необходимо включить с помощью флага -ea, например
java -ea MyClass
Поэтому утверждение может быть включено и выключено без каких-либо изменений в коде.
Класс Assert всегда будет работать вместо этого. Поэтому, если вы проводите тестирование, используйте класс Assert, а не ключевое слово assert. Это может дать вам представление о том, что все ваши тесты проходят, и хотя на самом деле они ничего не утверждают. За свои 10 с лишним лет написания кода я никогда не видел никого, включающего утверждения, кроме Jetbrains, поэтому используйте вместо него Assert. Или лучше используйте Hamcrest.
Говоря о производительности:
assert object!=null;
это одно заявление Java, но Assert.assertNotNull(object)
приведет к вызову нескольких функций TestNG, поэтому по производительности assert object!=null;
будет немного лучше.
Разница в основном заключается в отсутствии assert
ключевое слово. Это источник из testng:
static public void assertNotNull(Object object) {
assertNotNull(object, null);
}
static public void assertNotNull(Object object, String message) {
assertTrue(object != null, message);
}
Обратите внимание, что ОП использовал тег testng!
Это не Юнит Assert
!
Некоторая информация о Java assert
ключевое слово: утверждать