Hamcrest文件匹配器

2023/05/12

1. 概述

在本教程中,我们介绍Hamcrest文件匹配器。

2. Maven配置

首先,我们需要在pom.xml中添加以下依赖项:

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

3. 文件属性

Hamcrest提供了几个匹配器来验证常用的文件属性,让我们看看如何使用aFileNamed()结合字符串匹配器来验证文件名:

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

我们还可以断言文件路径:

@Test
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
void whenVerifyingFileSize_thenCorrect() {
    File file = new File("src/test/resources/test1.in");

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

最后,我们可以检查一个File是否可读可写:

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

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

4. 现有文件匹配器

如果我们想验证文件或目录是否存在,我们可以使用anExistingFile()或anExistingDirectory()匹配器:

@Test
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());
}

还提供了将两者结合的ExistingFileOrDirectory()匹配器可供使用。

5. 总结

在这篇快速文章中,我们介绍了Hamcrest文件匹配器及其使用方法。

与往常一样,本教程的完整源代码可在GitHub上获得。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章