Статьи

Напишите пользовательские утверждения AssertJ

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, являются их собственными.