LoginSignup
0
2

More than 5 years have passed since last update.

AssertJでリストの包除関係をテスト

Posted at

一覧

リスト同士

結果が期待値… assertThat(actual).xxx(expected)
と同じ(順不同) containsOnlyElementsOf
containsExactlyInAnyOrderElementsOf
を全て含む containsAll
に全て含まれる isSubsetOf
をひとつでも含む containsAnyElementsOf
をひとつも含まない doesNotContainAnyElementsOf

リストと要素

結果が期待値… assertThat(actual).xxx(expected)
に含まれる isIn
に含まれない isNotIn
を(全て)含む contains
を(ひとつも)含まない doesNotContain

サンプルコード

全て最後のassertが失敗する。

src/test/java/ListTest.java
import org.junit.jupiter.api.Test;
import java.util.Arrays;
import static org.assertj.core.api.Assertions.assertThat;

public class ListTest {

    @Test
    void equalityTest() {
        assertThat(Arrays.asList(2, 3, 5)).containsOnlyElementsOf(Arrays.asList(3, 5, 2));
        assertThat(Arrays.asList(2, 3, 5)).containsOnlyElementsOf(Arrays.asList(2, 4, 6));
    }

    @Test
    void equalityTest2() {
        assertThat(Arrays.asList(2, 3, 5)).containsExactlyInAnyOrderElementsOf(Arrays.asList(3, 5, 2));
        assertThat(Arrays.asList(2, 3, 5)).containsExactlyInAnyOrderElementsOf(Arrays.asList(2, 4, 6));
    }

    @Test
    void supersetTest() {
        assertThat(Arrays.asList(2, 3, 5)).containsAll(Arrays.asList(3, 5));
        assertThat(Arrays.asList(2, 3, 5)).containsAll(Arrays.asList(3, 5, 2));
        assertThat(Arrays.asList(2, 3, 5)).containsAll(Arrays.asList(1, 2, 3, 4, 5, 6));
    }

    @Test
    void subsetTest() {
        assertThat(Arrays.asList(2, 3, 5)).isSubsetOf(Arrays.asList(1, 2, 3, 4, 5, 6));
        assertThat(Arrays.asList(2, 3, 5)).isSubsetOf(Arrays.asList(3, 5, 2));
        assertThat(Arrays.asList(2, 3, 5)).isSubsetOf(Arrays.asList(3, 5));
    }

    @Test
    void intersectionTest() {
        assertThat(Arrays.asList(2, 3, 5)).containsAnyElementsOf(Arrays.asList(2, 4, 6));
        assertThat(Arrays.asList(2, 3, 5)).containsAnyElementsOf(Arrays.asList(3, 5, 2));
        assertThat(Arrays.asList(2, 3, 5)).containsAnyElementsOf(Arrays.asList(1, 4, 6));
    }

    @Test
    void disjointTest() {
        assertThat(Arrays.asList(2, 3, 5)).doesNotContainAnyElementsOf(Arrays.asList(1, 4, 6));
        assertThat(Arrays.asList(2, 3, 5)).doesNotContainAnyElementsOf(Arrays.asList(2, 4, 6));
    }


    @Test
    void includedTest() {
        assertThat(3).isIn(Arrays.asList(2, 3, 5));
        assertThat(3).isIn(Arrays.asList(2, 4, 6));
    }

    @Test
    void excludedTest() {
        assertThat(3).isNotIn(Arrays.asList(2, 4, 6));
        assertThat(3).isNotIn(Arrays.asList(2, 3, 5));
    }


    @Test
    void includingTest() {
        assertThat(Arrays.asList(2, 3, 5)).contains(3);
        assertThat(Arrays.asList(2, 3, 5)).contains(1, 2, 4, 5, 6);
    }

    @Test
    void excludingTest() {
        assertThat(Arrays.asList(2, 3, 5)).doesNotContain(4);
        assertThat(Arrays.asList(2, 3, 5)).doesNotContain(2, 4, 6);
    }
}

バージョン

pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.3.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.3.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.assertj</groupId>
            <artifactId>assertj-core</artifactId>
            <version>3.11.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.22.1</version>
            </plugin>
        </plugins>
    </build>
</project>
0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2