public void AllValid_Run_Success() { //I don't know what a proper set of unit tests would be for a given workflow, other than that it should exercise all code paths //and confirm that all specifications are met. This is just an example. var repo = new MockItemRepository(); var processor = new StubFooProcessor(); var sender = new MockFooSender(); var workflow = new FooWorkflow(repo, processor, sender); workflow.Run(); Assert.AreEqual(1, repo.TimesRun); Assert.AreEqual(2, sender.GetSentFoos().Count()); }