«1. Обзор

В этом руководстве мы обсудим сопоставления файлов Hamcrest.

Мы обсуждали Hamcrest Matchers в целом ранее в предыдущей статье Testing with 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.

3. Свойства файла

Hamcrest предоставляет несколько средств сопоставления, которые проверяют часто используемые свойства файла.

Давайте посмотрим, как мы можем проверить имя файла, используя aFileNamed() в сочетании со строковым сопоставлением:

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

Мы также можем оценить путь к файлу – снова в сочетании со строковым сопоставлением:

@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 Matcher

Если мы хотим чтобы убедиться, что файл или каталог существует, мы можем использовать сопоставители 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());
}

Также доступен сопоставитель anExistingFileOrDirectory(), который объединяет их.

5. Заключение

В этой быстрой статье мы рассмотрели сопоставления файлов Hamcrest и их использование.

Как всегда, полный исходный код примеров доступен на GitHub.