public virtual TestRunState Run(IEnumerable <ITestCase> testCases = null, TestRunState initialRunState = TestRunState.NoTests) { try { if (testCases != null) { testCases = testCases.ToList(); } var visitor = new ResultVisitor(testListener) { TestRunState = initialRunState }; toDispose.Push(visitor); if (testCases == null) { xunit.Run(visitor, new XunitDiscoveryOptions(configuration), new XunitExecutionOptions(configuration)); } else { xunit.Run(testCases, visitor, new XunitExecutionOptions(configuration)); } visitor.Finished.WaitOne(); return(visitor.TestRunState); } catch (Exception ex) { testListener.WriteLine("Error during test execution:\r\n" + ex, Category.Error); return(TestRunState.Error); } }
public List <IMessageSinkMessage> Run(Type[] types, Func <IMessageSinkMessage, bool> cancellationThunk = null) { Xunit2 = new Xunit2(new NullSourceInformationProvider(), new Uri(types[0].Assembly.CodeBase).LocalPath, configFileName: null, shadowCopy: true); bool cancelled = false; Func <IMessageSinkMessage, bool> wrapper = msg => { var result = true; if (cancellationThunk != null) { result = cancellationThunk(msg); } if (!result) { cancelled = true; } return(result); }; var discoverySink = new SpyMessageSink <IDiscoveryCompleteMessage>(wrapper); foreach (Type type in types) { Xunit2.Find(type.FullName, includeSourceInformation: false, messageSink: discoverySink); discoverySink.Finished.WaitOne(); discoverySink.Finished.Reset(); } if (cancelled) { return(new List <IMessageSinkMessage>()); } var testCases = discoverySink.Messages.OfType <ITestCaseDiscoveryMessage>().Select(msg => msg.TestCase).ToArray(); var runSink = new SpyMessageSink <ITestAssemblyFinished>(cancellationThunk); Xunit2.Run(testCases, runSink); runSink.Finished.WaitOne(); return(runSink.Messages.ToList()); }
public List <IMessageSinkMessage> Run(Type[] types) { Xunit2 = new Xunit2(new NullSourceInformationProvider(), types[0].Assembly.GetLocalCodeBase(), configFileName: null, shadowCopy: true); var discoverySink = new SpyMessageSink <IDiscoveryCompleteMessage>(); foreach (Type type in types) { Xunit2.Find(type.FullName, includeSourceInformation: false, messageSink: discoverySink, options: new XunitDiscoveryOptions()); discoverySink.Finished.WaitOne(); discoverySink.Finished.Reset(); } var testCases = discoverySink.Messages.OfType <ITestCaseDiscoveryMessage>().Select(msg => msg.TestCase).ToArray(); var runSink = new SpyMessageSink <ITestAssemblyFinished>(); Xunit2.Run(testCases, runSink, new XunitExecutionOptions()); runSink.Finished.WaitOne(); return(runSink.Messages.ToList()); }
void RunTestsInAssembly(IFrameworkHandle frameworkHandle, List<IDisposable> toDispose, string assemblyFileName, IEnumerable<TestCase> testCases = null) { if (cancelled) return; var xunit2 = new Xunit2(SourceInformationProvider, assemblyFileName, configFileName: null, shadowCopy: true); toDispose.Add(xunit2); if (testCases == null) { using (var visitor = new TestDiscoveryVisitor()) { xunit2.Find(includeSourceInformation: true, messageSink: visitor); visitor.Finished.WaitOne(); testCases = visitor.TestCases.Select(tc => VsDiscoveryVisitor.CreateVsTestCase(frameworkHandle, assemblyFileName, xunit2, tc)).ToList(); } } var xunitTestCases = testCases.ToDictionary(tc => xunit2.Deserialize(tc.GetPropertyValue<string>(SerializedTestCaseProperty, null))); using (var executionVisitor = new VsExecutionVisitor(assemblyFileName, frameworkHandle, xunitTestCases, () => cancelled)) { xunit2.Run(xunitTestCases.Keys.ToList(), executionVisitor); executionVisitor.Finished.WaitOne(); } }