How do you unit test new code that uses a bunch of classes that cannot be instantiated in a test har

Posted by trendl on Stack Overflow See other posts from Stack Overflow or by trendl
Published on 2010-04-27T04:10:07Z Indexed on 2010/04/27 4:13 UTC
Read the original article Hit count: 190

Filed under:
|
|

I'm writing a messaging layer that should handle communication with a third party API. The API has a bunch of classes that cannot be easily (if at all) instantiated in a test harness. I decided to wrap each class that I need in my unit tests with an adapter/wrapper and expose the members I need through this adapter class. Often I need to expose the wrapped type as well which I do by exposing it as an object. I have also provided an interface for for each or the adapter classes to be able to use them with a mocking framework. This way I can substitute the classes in test for whatever I need. The downside is that I have a bunch of adapter classes that so far server no other reason but testing. For me this is a good reason by itself but others may find this not enough. Possibly, when I write an implementation for another third party vendor's API, I may be able to reuse much of my code and only provide the adapters specific to the vendor's API. However, this is a bit of a long shot and I'm not actually sure it will work.

What do you think? Is this approach viable or am I writing unnecessary code that serves no real purpose? Let me say that I do want to write unit tests for my messaging layer and I do now know how to do it otherwise.

© Stack Overflow or respective owner

Related posts about .NET

Related posts about unit-testing