AssertJ является альтернативной библиотекой соответствия широко используемым сопоставителям Hamcrest. Для моих собственных проектов я фактически перешел на использование AssertJ — мне просто нравятся гибкие интерфейсы и расширяемость.
Вы можете написать пользовательские утверждения следующим образом:
Представьте себе кофе с крепостью и типом напитка, например, эспрессо или латте . Пользовательский CoffeeAssert проверяет экземпляры кофе на основе их собственной бизнес-логики — в данном случае их свойств.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
public class CoffeeAssert extends AbstractAssert<CoffeeAssert, Coffee> { public CoffeeAssert(Coffee actual) { super(actual, CoffeeAssert.class); } public static CoffeeAssert assertThat(Coffee actual) { return new CoffeeAssert(actual); } public CoffeeAssert hasType(Coffee.Type type) { isNotNull(); if (actual.getType() != type) { failWithMessage("Expected the coffee type to be <%s> but was <%s>", type, actual.getType()); } return this; } // hasStrength(Strength) omitted ... public CoffeeAssert isNotDecaf() { isNotNull(); if (actual.getStrength() == Coffee.Strength.DECAF) { failWithMessage("Expected a coffee but got decaf!"); } return this; }} |
Затем экземпляры кофе можно просто проверить с помощью пользовательского утверждения. Статический импорт assertThat должен ссылаться на CoffeeAssert .
|
01
02
03
04
05
06
07
08
09
10
|
import static com.example.coffee.CoffeeAssert.assertThat;...Coffee coffee = new Coffee();coffee.setStrength(Strength.STRONG);coffee.setType(Type.ESPRESSO);assertThat(coffee) .hasType(Type.ESPRESSO) .isNotDecaf(); |
Использование пользовательских утверждений может значительно улучшить качество вашего тестового кода.
Это сообщение было размещено в моем выпуске бюллетеня 012
Нашли пост полезным? Подпишитесь на мою рассылку, чтобы получить больше бесплатного контента, советы и рекомендации по IT и Java
| Опубликовано на Java Code Geeks с разрешения Себастьяна Дашнера, партнера нашей программы JCG. Смотрите оригинальную статью здесь: Напишите пользовательские утверждения AssertJ
Мнения, высказанные участниками Java Code Geeks, являются их собственными. |