We've been using Udi Dahan's excellent Domain Events pattern in a project at work. It's best to keep them as coarse-grained as possible, but we have already identified a dozen or so events that need to be raised by the domain and processed by our services layer.

Naturally, however, I am forgetting to register some of the event handlers in our IoC container. So, as before with our domain services, I decided to write some integration tests to check everything is set up properly. This is very simple to achieve using NUnit's trusty parameterized tests, ServiceLocator and a sprinkling of generics:

IEnumerable<Type> GetDomainEvents()
    var domain = Assembly.GetAssembly(typeof(Employee));
    return domain.GetTypes()
        .Where(t => !t.Equals(typeof(IDomainEvent)));
public void Should_be_able_to_resolve_handlers_for_domain_event(
    [ValueSource("GetDomainEvents")]Type @event)
    var handler = typeof (IHandles<>).MakeGenericType(@event);

This reveals a nice todo list of all the handlers we haven't implemented yet. And the ones I forgot to register!

NUnit Should_be_able_to_resolve_handlers_for_domain_event