«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.