java-assertj: Rozdiel medzi revíziami

Z bur.sk
Skočit na navigaci Skočit na vyhledávání
(Vytvorená stránka „{{DISPLAYTITLE:AssertJ}} Knižnica AssertJ poskytuje krajšie asserty pre automatické testy. Napríklad: {|border="1" cellspacing="0" cellpadding="2" ! JUnit ! Assert…“)
 
Riadok 28: Riadok 28:
 
                 .doesNotContain("abc");
 
                 .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);
 +
}

Verzia zo dňa a času 15:37, 1. február 2023


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);
}