1. 概要

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

前回のHamcrestの記事で、HamcrestMatchersについて一般的に説明しました。 次のセクションでは、ファイルマッチャーのみに焦点を当てます。

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 の最新バージョンは、MavenCentralからダウンロードできます。

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

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

最後に、ファイルが読み取りおよび書き込み可能かどうかを確認できます。

@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. 結論

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

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