jeudi 3 septembre 2015

Dependency Injection in Unit Test

I have a folder with assemblies that all contain an implementation of a certain interface (different in each assembly). I have written some unit tests for that interface, and would like to automate the task of running the interface tests on each implementation.

I have a working solution that I don't like:

  • Write code in the actual test class to load (the assemblies) and instantiate the implementations, store these in a list.

  • Write each test to loop through the list of implementations, running its assertions on each.

What I want instead is to run all tests on one implementation, then move on to the next to run all tests again, and so on. My thought was to find a way to do something like (programmatically):

  • Load the assemblies and instantiate the implementations - like before, but not inside the test class.
  • Create an instance of the test class, injecting the next implementation.
  • Run the tests.
  • Move on to the next implementation, and then repeat the process.

(I realize that I could be shuffling files around in the file system - like put an assembly in one location > run the test which loads one implementation > replace the assembly with the next implementation, and then repeat the process. However, I would like something less crude, if possible.)

I've been looking at the nUnit test-runners (console etc.) for a short cut, but found none so far. Does anyone know if there is a way to achieve what I want using nUnit or any other test suite that can be controlled programmatically? Or maybe there's another way to go about it all, that will satisfy the "what I want" criteria above?

Aucun commentaire:

Enregistrer un commentaire