Hamcrest File Matchers

Hamcrestファイルマッチャー

1. 概要

このチュートリアルでは、ハムクレストファイルマッチャーについて説明します。

前回のTesting with Hamcrestの記事で、ハムクレストマッチャー全般について説明しました。 次のセクションでは、Fileマッチャーのみに焦点を当てます。

2. Mavenの構成

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


    org.hamcrest
    java-hamcrest
    2.0.0.0
    test

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

ハムクレストFileマッチャーの探索を続けましょう。

3. ファイルのプロパティ

Hamcrestは、一般的に使用されるFileプロパティを検証するいくつかのマッチャーを提供します。

aFileNamed()Stringマッチャーを組み合わせてFile名を確認する方法を見てみましょう。

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

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

ファイルパスを評価することもできます–これもStringマッチャーと組み合わせて:

@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()マッチャーも利用できます。

5. 結論

この簡単な記事では、Hamcrest File Matchersとその使用について説明しました。

いつものように、例の完全なソースコードはover on GitHubで入手できます。