Функция обратного вызова - это функция, которая должна вызываться, когда выполняется определенное условие. Вместо того, чтобы немедленно вызываться, функция обратного вызова вызывается в определенную точку в будущем.
Обычно она используется, когда задача запускается, которая завершится асинхронно (т.е. закончится через некоторое время после вызова функции )
Например, функция запроса веб-страницы может потребовать от своего вызывающего пользователя функции обратного вызова, которая будет вызываться, когда веб-страница закончит загрузку.
Я бы посоветовал вам использовать новые утверждения стиля assertThat ()
, которые могут легко описывать все виды отрицаний и автоматически строить описание того, что вы ожидали и что вы получили, если утверждение не удалось:
assertThat(objectUnderTest, is(not(someOtherObject)));
assertThat(objectUnderTest, not(someOtherObject));
assertThat(objectUnderTest, not(equalTo(someOtherObject)));
Все три варианта эквивалентны, выберите тот, который вы считаете наиболее читаемым.
Чтобы использовать простые имена методов (и позволить этому напряженному синтаксису работать), вы нужен этот импорт:
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
Интересно то же самое. API Assert не очень симметричен; для проверки идентичности объектов он предоставляет assertSame
и assertNotSame
.
Конечно, это не так уж много, чтобы написать:
assertFalse(foo.equals(bar));
С таким утверждением единственное информативной частью вывода, к сожалению, является название метода тестирования, поэтому описательное сообщение следует формировать отдельно:
String msg = "Expected <" + foo + "> to be unequal to <" + bar +">";
assertFalse(msg, foo.equals(bar));
Это, конечно, настолько утомительно, что лучше использовать собственный assertNotEqual
. К счастью, в будущем он, возможно, будет частью JUnit: JUnit issue 22