In WeatherFormatterTest, we used a
utility from Apache Commons IO—the IOUtils
class. IOUtils provides a number of helpful static
functions that take most of the work out of input/output operations. In
this particular unit test, we used IOUtils.toString() to copy the
format-expected.dat classpath resource to a
String. We could have done this without using
Commons IO, but it would have required an extra six or seven lines of code
to deal with the various InputStreamReader and
StringWriter objects. The main
reason we used Commons IO was to give us an excuse to add a
test-scoped dependency on Commons IO.
A test-scoped dependency is a dependency that is
available on the classpath only during test compilation and test
execution. If your project has war or
ear packaging, a test-scoped
dependency would not be included in the project’s output archive. To add a
test-scoped dependency, add the
dependency element to your project’s dependencies section, as shown in the
following example:
Example 4.14. Adding a Test-scoped Dependency
<project>
...
<dependencies>
...
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
<scope>test</scope>
</dependency>
...
</dependencies>
</project>
After you add this dependency to the pom.xml,
run mvn dependency:resolve and you should see that
commons-io is now listed as a dependency with scope
test. We need to do one more thing before we are ready
to run this project's unit tests. We need to create the classpath
resources these unit tests depend on.
