Independent IoC-ish unit testing

The following is for the moment only a disertation on the possibility to ease the development of unit testing for the product I am working now. As a preamble I would say that in order to be able to test some parts of the product a developer would need a very long/complex/repetitive fixture. The first solution that came to me was to create unit tests using an IoC solution. Interesting… but this will link my test to a IoC solution (I like Spring Framework very much [smile/], but I don’t like too much dependency). A better solution would be to have a single test base that according to some other configurations to be able to load the required context. But this will not completely solve the dependency problem and may result in time in a large number of different base unit tests (specialized in different initialization types). What if I will remove completely the dependency to the IoC from my tests? How? …. using AOP. As you probably know both TestNG and JUnit provide very clear points where the fixture is (for those who don’t know this: TestNG declares a fixture method using a Configuration annotation; JUnit provides this by means of setUp method in TestCase or by extending TestSetup). Right now all I have to do is to write down some simple aspects that will initialize the test unit with the required info. For the moment the only AOP solution (I might be wrong here [sigh/]) that is able to cover both cases (normal pointcuts and annotation based pointcuts) is AspectWerkz. So starting with a solution that presented a high dependency I have finished with: any IoC solution (Spring, Pico, etc), any unit testing framework (TestNG, JUnit) and AspectWerkz. What do you think about this? (if you see any possible drawbacks don’t let me go a wrong way [smile/]).

Advertisements

Leave a comment

Filed under Uncategorized

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s