I am working on a Spring application (Spring 3.0) and following layered architecture i.e. Controller -> Service -> DAO layers
.
I want to write unit test cases for service and DAO layer using Junit.
I checked Spring official site and also tried many other sites but couldn't figure out an easy and simple way of doing it.
Can anybody provide me some helpful resources ?
EDIT :
Looks like Mockito is the good option. Any good link to use it in Spring.
Thank you Alex for suggesting it.
In terms of resources the Spring documentation on testing is very good. This can be found here.
When you test your service layer you will want to use a mocking library such as Mockito to mock your DAOs and therefore your domain layer. This ensures that they are true unit tests.
Then to integration test your DAOs against a database you can use the Spring transactional test utilities described in that reference documentation.
Don't know much about resources, but it's not that hard to do if you have your dao + spring setup nicely. You'll need the following:
JUNIT dependencies obivously. with maven, something like that:
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.2</version> </dependency>
The test class, which you place inside src/test/java:
@TransactionConfiguration(defaultRollback = true) @ContextConfiguration({ "classpath:test-spring-context.xml" }) @Transactional @RunWith(SpringJUnit4ClassRunner.class) public class SomeTests { // ... }
The context file for your spring setup referencing your DAO datasource placed inside src/test/resources. Somewhere in your test-spring-context.xml:
<import resource="datasource-test.xml" />
Now for example in eclipse you can run the project as a JUNIT test.
Need more details? Is this solution applicable?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With