Layer-based automated testing, part 3: emulating request/response scenarios in tests

This article is about using BDD and SpecFlow for testing request/response scenarios like message boxes, modal windows, interaction with peripheral devices and similar cases. I'm using the sample from previous article but in fact this article is valid for every testing system using BDD and SpecFlow.

Layer-based automated testing, part 2: registration reusable in tests

Previous article contained some general discussion on where the layer-based approach to testing is applicable. Now, let's get into details of implementation. To be able to test layers, you'll need to be able to easily separate them one from another, and easily reuse them as a whole from different entry points (from actual application, from tests, etc).

Layer-based automated testing, part 1: choosing the right testing approach

This is a series of articles about building an effective testing system of larger-scale code-driven tests for your .Net application. It shows how to use such concepts like IoC, MVVM, BDD, mocking and asynchronous programming together to minimize efforts on developing new tests and supporting old ones. Also it gives a working sample of such test-friendly architecture. Of course this approach is not applicable for all cases, but it has proven its effectiveness for many existing scenarios.

DataRecorder: a lightweight data synchronization approach

Let's suppose for some reason in your .Net client\server application you can't use standard approaches to remote data synchronization, like .Net remoting, WCF and ICE objects (bypassing proxies\firewalls may be one of the reasons you may encounter this problem). So, you have to implement your own lightweight data synchronization engine or hardcode synchronization for every specific task, object and collection you want to synchronize. As a solution, it may be a good idea to write a class-manager that listens to a standard .Net data events from interfaces INotifyPropertyChanged and INotifyCollectionChanged, and records these changes into serializable commands, so it is possible to execute this commands remotely, updating the remote state of this object.

Syndicate content