So before I get all excited and start writing tests that read or write to the database I write a very simple test to check that everything has been injected correctly.
public class FooServiceIntegrationTest extends BaseIntegrationTester{
private FooService fooService;
public void setFooService(BulkUploadService aFooService){
fooService = aFooService;
}
public void testInjection() throws Exception{
assertNotNull("FooService not injected", fooService);
}
}
Strictly speaking this test testInjection is not needed at this stage because the test will fail if the injection of this primary bean fails.
Ok so I need to create the bean.
<bean id="fooService" name="fooService" class="uk.co.foo.FooServiceImpl">
</bean>
The test will now pass.
The test now gets more useful as I now extend the test to see if FooService has its beans injected successfully.
public class FooServiceIntegrationTest extends BaseIntegrationTester{
private FooService fooService;
public void setFooService(BulkUploadService aFooService){
fooService = aFooService;
}
public void testInjection() throws Exception{
assertNotNull("FooService not injected", fooService);
assertNotNull("FooService not injected", fooService.getBarDao());
}
}
Now this will not compile at first as fooService.getBarDao() does not exist.
I add this to the interface and implement the method and re-run the test,
The test fails as we have not set the property on the bean so lets do that.
<bean id="fooService" name="fooService" class="uk.co.foo.FooServiceImpl">
<property name="barDao" ref="barDao" />
</bean>
Assuming barDao has also been configured then the test will now pass.
Possibly others do this, I do not know but I have found this little test invaluable as a precursor to grander integration tests later on.
BTW BaseIntegration tester does little more than extend AbstractTransactionalDataSourceSpringContextTests and implement the method getConfigLocations()
No comments:
Post a Comment