2013-05-22 7 views
7

В чем разница между следующими двумя блоками кода?В чем разница между assert object! = 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). Есть ли другие различия в этих двух? например работа, производительность и т. д.

ответ

7

Ну, первый случай использует класс Assert из вашего тестового фреймворка и является правильным путем, так как TestNG сообщит об ошибке разумным способом.

Вы также можете добавить свое сообщение к тесту:

Assert.assertNotNull(object, "This object should not be null"); 

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

3

Да, там есть: ключевое слово утверждают, необходимо включить с помощью флага -EA, как

java -ea MyClass 

утверждают, может для этого быть включен и выключен без каких-либо изменений в коде.

Класс Assert всегда будет работать. Итак, если вы проводите тестирование, используйте класс Assert, а не ключевое слово assert. Это может дать вам представление о том, что все ваши тесты проходят, и на самом деле они ничего не утверждают. За 10 лет моего кодирования я никогда не видел, чтобы кто-либо включал утверждения, кроме Jetbrains, поэтому вместо этого используйте Assert. Или лучше, используйте Hamcrest.

+0

Это выполняется на платформе TestNG. TestNG позволяет утверждать утверждения. Я не уверен, где вы получаете информацию. –

+0

Вы правы, я обновил свой ответ, чтобы исправить это. Благодаря! –

0

Разница в основном отсутствует 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 JUnit!

Некоторая информация о assert ключевое слово в Java: assert

2

Говоря о производительности:

assert object!=null; это один оператор Java, но Assert.assertNotNull(object) приведет к призванию нескольких функций TestNG, так w.r.t. производительность assert object!=null; будет немного лучше.

+0

Что значит немного лучше? Не могли бы вы предоставить некоторые цифры. – Senstive

+0

Я немного имею в виду «assert object! = Null;» будет меньше времени, но разница будет в миллисекундах – Raheel

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