Java Reference
In-Depth Information
.with(eq(PERSON_ID))
.will(returnValue(new Person(PERSON_ID)));
PersonService service =
new PersonService((PersonDao)mock.proxy());
service.isPersonalInformationValid(
new Person(new Integer(1)), new Integer(1));
assertNotNull("Expected non-null person instance.",
person);
assertEquals("Expected ID to be " + PERSON_ID,
PERSON_ID, person.getId());
assertTrue("Expected valid person.",
person.isValid());
}
Again we're making use of both
JU
nit and
JM
ock. As you can see in listing 13.6,
the testing approach is consistent at each layer of the application. This is a good
thing, as it makes for simple, focused unit tests that are easy to maintain.
That's as far as we'll go with unit testing for i
BATIS
. There are a number of
great resources that discuss unit testing in general. Try a Google search for “unit
testing.” You'll find plenty to help you to improve your unit-testing skills and per-
haps discover even better ways than those described here.
13.2 Managing iBATIS configuration files
By now it's pretty clear that i
BATIS
uses
XML
files for configuration and statement
mapping. These
XML
files can become unwieldy very quickly. This section dis-
cusses some best practices for organizing your
SQL
mapping files.
13.2.1
Keep it on the classpath
Location transparency
is one of the most important aspects of application maintain-
ability. It simplifies testing and deployment of your application. Part of location
transparency is keeping your application free of static file locations such as
/usr/
local/myapp/config/
or
C:\myapp\
. Although i
BATIS
will allow you to use specific
file locations, you are better off using the classpath. The Java classpath is helpful
when you want to keep your application free of any specific file paths. You can
think of the classpath as a mini file system that your application can refer to inter-
nally through the use of a classloader. A classloader is able to read resources from
the classpath, including classes and other files. Let's take a look at an example.
Imagine the following file structure on your classpath:










