Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Apart from the utility mentioned in part one I use another utility to make sure my unit tests report failures in a good way. When using CCR in a MSTest process unhandled exceptions may be silently swallowed by the CCR framework unless you have a handler for that case. Before I started to use causalities to deal with unhandled exceptions I would only see a timeout failure but with today's utility you see a failure with the actual message instead (if used right). This implementation is intended to be used in a using statement since it raises any encountered errors when disposed. In future tips and tricks you'll see how it's used.
1: class CausalityForTests : IDisposable
2: {
3: private Exception exception = null;
4:
5: public CausalityForTests(DispatcherQueue dispatcherQueue)
6: {
7: Port<Exception> exceptionPort = new Port<Exception>();
8: Causality causality = new Causality(
9: string.Format("CausalityForTests: {0}", Guid.NewGuid()),
10: exceptionPort);
11: Arbiter.Activate(
12: dispatcherQueue,
13: exceptionPort.Receive(e => this.exception = e));
14: Dispatcher.AddCausality(causality);
15: }
16:
17: public void Dispose()
18: {
19: if (this.exception != null)
20: {
21: throw this.exception;
22: }
23: }
24: }