java-assertj: Rozdiel medzi revíziami

Z bur.sk
Skočit na navigaci Skočit na vyhledávání
 
Riadok 63: Riadok 63:
 
Pridáme statickú funkciu na elegantné získanie assertu:
 
Pridáme statickú funkciu na elegantné získanie assertu:
  
  public PositionAssert assertThat(Position position) {
+
  public static PositionAssert assertThat(Position position) {
 
     return new PositionAssert(position);
 
     return new PositionAssert(position);
 
  }
 
  }

Aktuálna revízia z 15:52, 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 static 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);
}