В чем разница между объектом 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 ключевое слово: утверждать

Другие вопросы по тегам