在类 WeatherFormatterTest
中我们用了一个来自于 Apache
Commons IO 的工具—— IOUtils
类。
IOUtils
提供了许多很有帮助的静态方法,能帮助让很多工作摆脱繁琐的 I/O
操作。在这个单元测试中我们使用了 IOUtils.toString()
来复制 classpath
中资源 format.expected.dat
中的数据至
String
。 不用 Commons IO 我们也能完成这件事情,但是那需要额外的六七行代码来处理像
InputStreamReader
和
StringWriter
这样的对象。我们使用 Commons IO 的主要原因是,能有理由添加对
Commons IO 的测试范围依赖。
测试范围依赖是一个只在测试编译和测试运行时在 classpath 中有效的依赖。如果你的项目是以
war
或者 ear
形式打包的,测试范围依赖就不会被包含在项目的打包输出中。 要添加一个测试范围依赖,在你项目的
dependencies
小节中添加如下 dependency
元素。
Example 4.13. 添加一个测试范围依赖
<project> ... <dependencies> ... <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-io</artifactId> <version>1.3.2</version> <scope>test</scope> </dependency> ... </dependencies> </project>
当你往 pom.xml
中添加了这个依赖以后,运行 mvn
dependency:resolve 你会看到 commons-io
出现在在依赖列表中,范围是 test
。 在我们可以运行该项目的单元测试之前,我们还需要做一件事情。
那就是创建单元测试依赖的 classpath 资源。测试范围依赖将在 9.4.1节 “依赖范围” 中详细解释。