public void SetUp() { runner = new TestRunner(); test = new Test("slow test").With(Section.For<SlowFixture>().WithStep("GoSlow")); var reset = new ManualResetEvent(false); var running = new ManualResetEvent(false); var thread = new Thread(() => { running.Set(); Debug.WriteLine("Starting to run"); test.LastResult = runner.RunTest(new TestExecutionRequest() { Test = test, TimeoutInSeconds = 60 }); test.LastResult.ShouldNotBeNull(); Debug.WriteLine("finished running"); reset.Set(); }); thread.Start(); running.WaitOne(); Thread.Sleep(1000); Debug.WriteLine("Aborting now!"); runner.Abort(); Debug.WriteLine("Done aborting"); reset.WaitOne(5000); test.LastResult.ShouldNotBeNull(); test.LastResult.WasCancelled.ShouldBeTrue(); Debug.WriteLine("completely done"); }