Hamcrest File Matchers

1概要

このチュートリアルでは、Hamcrest File Matchersについて説明します。

以前のリンクで、Hamcrest Matchersについて一般的に説明しました。/java-junit-hamcrest-guide[Hamcrestによるテスト]の記事次のセクションでは、 File Matchersのみに焦点を当てます。

2 Mavenの設定

まず、 pom.xml に次の依存関係を追加する必要があります。

<dependency>
    <groupId>org.hamcrest</groupId>
    <artifactId>java-hamcrest</artifactId>
    <version>2.0.0.0</version>
    <scope>test</scope>
</dependency>

java-hamcrest の最新バージョンはMaven Centralからダウンロードできます。

Hamcrest File Matchersの調査を続けましょう。

3ファイルのプロパティ

Hamcrestは、よく使われる File プロパティを検証するいくつかのマッチャーを提供します。

aFileNamed() String Matcherを組み合わせて File 名を検証する方法を見てみましょう。

@Test
public void whenVerifyingFileName__thenCorrect() {
    File file = new File("src/test/resources/test1.in");

    assertThat(file, aFileNamed(equalToIgnoringCase("test1.in")));
}

String Matcherと組み合わせて、ファイルパスを評価することもできます。

@Test
public void whenVerifyingFilePath__thenCorrect() {
    File file = new File("src/test/resources/test1.in");

    assertThat(file, aFileWithCanonicalPath(containsString("src/test/resources")));
    assertThat(file, aFileWithAbsolutePath(containsString("src/test/resources")));
}

ファイルのサイズ(バイト単位)も見てみましょう。

@Test
public void whenVerifyingFileSize__thenCorrect() {
    File file = new File("src/test/resources/test1.in");

    assertThat(file, aFileWithSize(11));
    assertThat(file, aFileWithSize(greaterThan(1L)));;
}

最後に、 File が読み書き可能かどうかを確認できます。

@Test
public void whenVerifyingFileIsReadableAndWritable__thenCorrect() {
    File file = new File("src/test/resources/test1.in");

    assertThat(file, aReadableFile());
    assertThat(file, aWritableFile());
}

4既存のファイルマッチャー

File またはディレクトリが存在することを確認したい場合は、 anExistingFile() または anExistingDirectory() マッチャーを使用できます。

@Test
public void whenVerifyingFileOrDirExist__thenCorrect() {
    File file = new File("src/test/resources/test1.in");
    File dir = new File("src/test/resources");

    assertThat(file, anExistingFile());
    assertThat(dir, anExistingDirectory());
    assertThat(file, anExistingFileOrDirectory());
    assertThat(dir, anExistingFileOrDirectory());
}

この2つを組み合わせた anExistingFileOrDirectory() matcherも利用可能です。

5結論

このクイック記事では、Hamcrest File Matchersとその使用方法について説明しました。

いつものように、例の完全なソースコードはhttps://github.com/eugenp/tutorials/tree/master/guava[GitHubに載っています]から入手できます。