IT:AD:Unit Testing/Automated:HowTo:Test N-Tier Apps
- See also: IT:AD:NConfig
Summary
Developing Automated Unit Tests for N-Tier apps is an order more complex than the creation of tests for 3 Tier apps.
Process
Creating Automated Unit Tests of application tier services is relatively straight forward. It's done by remembering that Unit Tests are never Integration Tests, and Mock any services required.
Creating Automated Integration Tests of application tier services is doable.
the TestFixtureSetup or even TestSetup method has to create a new IoC Container before every test and invoke the application's boot strapping sequence, using a different ConnectionString and NConfig'ed settings..
Creating Automated Unit Tests of the Presentation Tier's services is done via mocking.
Creating Automated Integration Tests of the Presentation Tier services – which invoke the Application Tier's services using WCF or other cross-tier serialization protocol – is much more complex.
The App.Front.Tests integration tests have to: * Create two different IoC containers * The back tier's application has to be hosted within a test apphost console. * The back app has to have a ServiceHost for each service it is exposing. * Have to open up ports for each service:
netsh http add urlacl url=http://+:80/MyServiceUri user=DOMAIN\user
* The front app has to start the back app.
- Which will go through its startup sequence.
* The front app has to shut down the console when done (for next test run).
- That part is actually hard to do.
- The console app can use a timer to shut itself down 60 seconds after its last call.