AssertJ

Z bur.sk
Verzia z 15:37, 1. február 2023, ktorú vytvoril Viliam (diskusia | príspevky)
Skočit na navigaci Skočit na vyhledávání


Knižnica AssertJ poskytuje krajšie asserty pre automatické testy. Napríklad:

JUnit AssertJ
assertTrue(3 < 4);
assertThat(3).isLessThan(4);
assertTrue("abc".contains("a"));
assertTrue("abc".contains("b"));
assertTrue("abc".contains("c"));
assertThat("abc").contains("a")
                 .contains("b")
                 .contains("c");
assertFalse(list.isEmpty());
assertFalse(list.contains("abc"));
assertThat(list).isNotEmpty()
                .doesNotContain("abc");

Asserty pre vlastné typy

Máme napríklad takúto triedu:

public record Position(int x, int y) {}

Vytvoríme pre ňu assert:

public class PositionAssert extends AbstractAssert<PositionAssert, Position> {

    protected PositionAssert(Position actual) {
        super(actual, PositionAssert.class);
    }

    public PositionAssert hasX(int expectedX) {
        isNotNull();
        if (actual.x != expectedX) {
            failWithMessage("Expected X %d but was %d", expectedX, actual.x);
        }
        return this;
    }

    public PositionAssert hasY(int expectedY) {
        isNotNull();
        if (actual.y != expectedY) {
            failWithMessage("Expected Y %d but was %d", expectedY, actual.y);
        }
        return this;
    }

}

Pridáme statickú funkciu na elegantné získanie assertu:

public PositionAssert assertThat(Position position) {
    return new PositionAssert(position);
}

A môžeme písať testy v štýle AssertJ:

@Test
public void testPosition() {
    var p = new Position(3, 4);
    assertThat(p).hasX(3)
                 .hasY(4);
}