public void ExplicitTestCaseMatchesWhenSelectedDirectly() { NUnit.Core.TestCase explicitTest = (NUnit.Core.TestCase)TestFinder.Find("ExplicitlyRunTest", testSuite); SimpleNameFilter filter = new SimpleNameFilter("NUnit.Tests.Assemblies.MockTestFixture.ExplicitlyRunTest"); Assert.IsTrue(filter.Pass(explicitTest), "Name Filter did not pass on test case"); Assert.IsTrue(filter.Pass(testSuite), "Name Filter did not pass on test suite"); }
public void HighLevelSuite() { NUnit.Core.TestSuite mockTest = (NUnit.Core.TestSuite)TestFinder.Find("MockTestFixture", testSuite); SimpleNameFilter filter = new SimpleNameFilter("NUnit.Tests.Assemblies.MockTestFixture"); Assert.AreEqual(true, filter.Pass(mock3), "test case"); Assert.AreEqual(true, filter.Pass(mockTest), "middle suite"); Assert.AreEqual(true, filter.Pass(testSuite), "test suite"); }
public void ExplicitTestSuiteDoesNotMatchWhenNotSelectedDirectly() { NUnit.Core.TestSuite mockTest = (NUnit.Core.TestSuite)TestFinder.Find("MockTestFixture", testSuite); mockTest.RunState = RunState.Explicit; SimpleNameFilter filter = new SimpleNameFilter("Mock Test Suite"); Assert.AreEqual(false, filter.Pass(mock3), "descendant of explicit suite should not match"); Assert.AreEqual(false, filter.Pass(mockTest), "explicit suite should not match"); }
public void MultipleNameMatchWithTrailingComma() { Test mock1 = TestFinder.Find("MockTest1", testSuite, true); SimpleNameFilter filter = new SimpleNameFilter("NUnit.Tests.Assemblies.MockTestFixture.MockTest3,NUnit.Tests.Assemblies.MockTestFixture.MockTest1,"); Assert.IsTrue(filter.Pass(mock3), "Name Filter did not pass test case"); Assert.IsTrue(filter.Pass(mock1), "Name Filter did not pass test case"); Assert.IsTrue(filter.Pass((TestSuite)testSuite.Tests[0]), "Name Filter did not pass test suite"); }
private ITestFilter GetNameFilter(string featureName) { var nameFilter = new SimpleNameFilter(); foreach (string name in TestNameParser.Parse(featureName)) nameFilter.Add(name); return nameFilter; }
public void SuiteNameMatch() { NUnit.Core.TestSuite mockTest = (NUnit.Core.TestSuite)TestFinder.Find("MockTestFixture", testSuite, true); SimpleNameFilter filter = new SimpleNameFilter("NUnit.Tests.Assemblies.MockTestFixture"); Assert.IsTrue(filter.Pass(mock3), "Name Filter did not pass test case"); Assert.IsTrue(filter.Pass(mockTest), "Fixture did not pass test case"); Assert.IsTrue(filter.Pass(testSuite), "Suite did not pass test case"); }
public void ExplicitTestSuiteMatchesWhenSelectedDirectly() { NUnit.Core.TestSuite mockTest = (NUnit.Core.TestSuite)TestFinder.Find("MockTestFixture", testSuite); mockTest.RunState = RunState.Explicit; SimpleNameFilter filter = new SimpleNameFilter("NUnit.Tests.Assemblies.MockTestFixture"); Assert.AreEqual(true, filter.Pass(mock3), "test case"); Assert.AreEqual(true, filter.Pass(mockTest), "middle suite"); Assert.AreEqual(true, filter.Pass(testSuite), "test suite"); }
public void SingleNameMatch() { string fullName = "NUnit.Tests.Assemblies.MockTestFixture.MockTest3"; Assert.AreEqual(fullName, mock3.TestName.FullName); SimpleNameFilter filter = new SimpleNameFilter(fullName); Assert.IsTrue(filter.Pass(mock3), "Name Filter did not pass test case"); Assert.AreEqual("NUnit.Tests.Assemblies.MockTestFixture", ((TestSuite)testSuite.Tests[0]).TestName.FullName); Assert.IsTrue(filter.Pass((TestSuite)testSuite.Tests[0]), "Name Filter did not pass test suite"); }
public void MultipleNameMatch() { NUnit.Core.TestCase mock1 = (NUnit.Core.TestCase)TestFinder.Find("MockTest1", testSuite); SimpleNameFilter filter = new SimpleNameFilter(); filter.Add("NUnit.Tests.Assemblies.MockTestFixture.MockTest3"); filter.Add("NUnit.Tests.Assemblies.MockTestFixture.MockTest1"); Assert.IsTrue(filter.Pass(mock3), "Name Filter did not pass test case"); Assert.IsTrue(filter.Pass(mock1), "Name Filter did not pass test case"); Assert.IsTrue(filter.Pass((TestSuite)testSuite.Tests[0]), "Name Filter did not pass test suite"); }
public void RunTests(string[] tests, UnitTestRunner.ITestRunnerCallback testRunnerEventListener) { List<String> assemblies = GetAssemblies(); TestSuite suite = PrepareTestSuite(assemblies); ITestFilter filter = TestFilter.Empty; if (tests != null && tests.Any()) filter = new SimpleNameFilter(tests); if (testRunnerEventListener!=null) testRunnerEventListener.RunStarted(suite.TestName.FullName, suite.TestCount); ExecuteTestSuite(suite, testRunnerEventListener, filter); if (testRunnerEventListener!=null) testRunnerEventListener.RunFinished(); }
public UnitTestResult[] RunTests(string[] tests, UnitTestRunner.ITestRunnerCallback testRunnerEventListener) { List<String> assemblies = GetAssemblies(); TestSuite suite = PrepareTestSuite(assemblies); ITestFilter filter = TestFilter.Empty; if (tests != null && tests.Any()) filter = new SimpleNameFilter(tests); testRunnerEventListener.RunStarted(suite.TestName.FullName, suite.TestCount); NUnit.Core.TestResult result = ExecuteTestSuite(suite, testRunnerEventListener, filter); UpdateTestResults(result); testRunnerEventListener.RunFinished(); return testList.ToArray(); }
private TestFilter getTestFilter(Options options) { TestFilter testFilter = TestFilter.Empty; if (options.Tests != null && options.Tests != string.Empty) testFilter = new SimpleNameFilter(options.Tests); if (options.Categories != null && options.Categories != string.Empty) { TestFilter excludeFilter = new NotFilter(new CategoryExpression(options.Categories).Filter); if (testFilter.IsEmpty) testFilter = excludeFilter; else if (testFilter is AndFilter) ((AndFilter)testFilter).Add(excludeFilter); else testFilter = new AndFilter(testFilter, excludeFilter); } if (testFilter is NotFilter) ((NotFilter)testFilter).TopLevel = true; return testFilter; }
private TestFilter getTestFilter(Options options) { var testFilter = TestFilter.Empty; if (!string.IsNullOrEmpty(options.Tests)) testFilter = new SimpleNameFilter(options.Tests); if (!string.IsNullOrEmpty(options.Categories)) { TestFilter excludeFilter = new NotFilter(new CategoryExpression(options.Categories).Filter); if (testFilter.IsEmpty) testFilter = excludeFilter; else if (testFilter is AndFilter) ((AndFilter)testFilter).Add(excludeFilter); else testFilter = new AndFilter(testFilter, excludeFilter); } var notFilter = testFilter as NotFilter; if (notFilter != null) notFilter.TopLevel = true; return testFilter; }
public TestResult ExecuteTest(string testName) { if (_isRunnerReady) { var result = new NunitTestResult(new TestName()); var filter = new SimpleNameFilter(); filter.Add(testName); result = _testRunner.Run(_eventListener, filter, false, LoggingThreshold.Off); var testSuiteResult = new TestSuite { Name = _projectName, TestResults = new List<TestResult>() }; TestAnalyzerHelper.ParseTestResults(testSuiteResult, result); return testSuiteResult.TestResults.First(); } return new TestResult(); }
public int Execute( ConsoleOptions options ) { XmlTextReader transformReader = GetTransformReader(options); if(transformReader == null) return FILE_NOT_FOUND; TextWriter outWriter = Console.Out; bool redirectOutput = options.output != null && options.output != string.Empty; if ( redirectOutput ) { StreamWriter outStreamWriter = new StreamWriter( options.output ); outStreamWriter.AutoFlush = true; outWriter = outStreamWriter; } TextWriter errorWriter = Console.Error; bool redirectError = options.err != null && options.err != string.Empty; if ( redirectError ) { StreamWriter errorStreamWriter = new StreamWriter( options.err ); errorStreamWriter.AutoFlush = true; errorWriter = errorStreamWriter; } TestRunner testRunner = MakeRunnerFromCommandLine( options ); try { if (testRunner.Test == null) { testRunner.Unload(); Console.Error.WriteLine("Unable to locate fixture {0}", options.fixture); return FIXTURE_NOT_FOUND; } EventCollector collector = new EventCollector( options, outWriter, errorWriter ); TestFilter testFilter = TestFilter.Empty; if ( options.run != null && options.run != string.Empty ) { Console.WriteLine( "Selected test: " + options.run ); testFilter = new SimpleNameFilter( options.run ); } if ( options.include != null && options.include != string.Empty ) { Console.WriteLine( "Included categories: " + options.include ); TestFilter includeFilter = new CategoryExpression( options.include ).Filter; if ( testFilter.IsEmpty ) testFilter = includeFilter; else testFilter = new AndFilter( testFilter, includeFilter ); } if ( options.exclude != null && options.exclude != string.Empty ) { Console.WriteLine( "Excluded categories: " + options.exclude ); TestFilter excludeFilter = new NotFilter( new CategoryExpression( options.exclude ).Filter ); if ( testFilter.IsEmpty ) testFilter = excludeFilter; else if ( testFilter is AndFilter ) ((AndFilter)testFilter).Add( excludeFilter ); else testFilter = new AndFilter( testFilter, excludeFilter ); } TestResult result = null; string savedDirectory = Environment.CurrentDirectory; TextWriter savedOut = Console.Out; TextWriter savedError = Console.Error; try { result = testRunner.Run( collector, testFilter ); } finally { outWriter.Flush(); errorWriter.Flush(); if ( redirectOutput ) outWriter.Close(); if ( redirectError ) errorWriter.Close(); Environment.CurrentDirectory = savedDirectory; Console.SetOut( savedOut ); Console.SetError( savedError ); } Console.WriteLine(); string xmlOutput = CreateXmlOutput( result ); if (options.xmlConsole) { Console.WriteLine(xmlOutput); } else { try { //CreateSummaryDocument(xmlOutput, transformReader ); XmlResultTransform xform = new XmlResultTransform( transformReader ); xform.Transform( new StringReader( xmlOutput ), Console.Out ); } catch( Exception ex ) { Console.WriteLine( "Error: {0}", ex.Message ); return TRANSFORM_ERROR; } } // Write xml output here string xmlResultFile = options.xml == null || options.xml == string.Empty ? "TestResult.xml" : options.xml; using ( StreamWriter writer = new StreamWriter( xmlResultFile ) ) { writer.Write(xmlOutput); } //if ( testRunner != null ) // testRunner.Unload(); if ( collector.HasExceptions ) { collector.WriteExceptions(); return UNEXPECTED_ERROR; } if ( !result.IsFailure ) return OK; ResultSummarizer summ = new ResultSummarizer( result ); return summ.FailureCount; } finally { testRunner.Unload(); } }
ITestFilter GetFilters() { var simpleNameFilter = new SimpleNameFilter(filters.ToArray()); return simpleNameFilter; }
public int Execute( ConsoleOptions options ) { this.workDir = options.work; if (workDir == null || workDir == string.Empty) workDir = Environment.CurrentDirectory; else { workDir = Path.GetFullPath(workDir); if (!Directory.Exists(workDir)) Directory.CreateDirectory(workDir); } TextWriter outWriter = Console.Out; bool redirectOutput = options.output != null && options.output != string.Empty; if ( redirectOutput ) { StreamWriter outStreamWriter = new StreamWriter( Path.Combine(workDir, options.output) ); outStreamWriter.AutoFlush = true; outWriter = outStreamWriter; } TextWriter errorWriter = Console.Error; bool redirectError = options.err != null && options.err != string.Empty; if ( redirectError ) { StreamWriter errorStreamWriter = new StreamWriter( Path.Combine(workDir, options.err) ); errorStreamWriter.AutoFlush = true; errorWriter = errorStreamWriter; } TestPackage package = MakeTestPackage(options); ProcessModel processModel = package.Settings.Contains("ProcessModel") ? (ProcessModel)package.Settings["ProcessModel"] : ProcessModel.Default; DomainUsage domainUsage = package.Settings.Contains("DomainUsage") ? (DomainUsage)package.Settings["DomainUsage"] : DomainUsage.Default; RuntimeFramework framework = package.Settings.Contains("RuntimeFramework") ? (RuntimeFramework)package.Settings["RuntimeFramework"] : RuntimeFramework.CurrentFramework; #if CLR_2_0 || CLR_4_0 Console.WriteLine("ProcessModel: {0} DomainUsage: {1}", processModel, domainUsage); Console.WriteLine("Execution Runtime: {0}", framework); #else Console.WriteLine("DomainUsage: {0}", domainUsage); if (processModel != ProcessModel.Default && processModel != ProcessModel.Single) Console.WriteLine("Warning: Ignoring project setting 'processModel={0}'", processModel); if (!RuntimeFramework.CurrentFramework.Supports(framework)) Console.WriteLine("Warning: Ignoring project setting 'runtimeFramework={0}'", framework); #endif using (TestRunner testRunner = new DefaultTestRunnerFactory().MakeTestRunner(package)) { testRunner.Load(package); if (testRunner.Test == null) { testRunner.Unload(); Console.Error.WriteLine("Unable to locate fixture {0}", options.fixture); return FIXTURE_NOT_FOUND; } EventCollector collector = new EventCollector( options, outWriter, errorWriter ); TestFilter testFilter = TestFilter.Empty; SimpleNameFilter nameFilter = new SimpleNameFilter(); if ( options.run != null && options.run != string.Empty ) { Console.WriteLine( "Selected test(s): " + options.run ); foreach (string name in TestNameParser.Parse(options.run)) nameFilter.Add(name); testFilter = nameFilter; } if (options.runlist != null && options.runlist != string.Empty) { Console.WriteLine("Run list: " + options.runlist); using (StreamReader rdr = new StreamReader(options.runlist)) { // NOTE: We can't use rdr.EndOfStream because it's // not present in .NET 1.x. string line = rdr.ReadLine(); while (line != null) { if (line[0] != '#') nameFilter.Add(line); line = rdr.ReadLine(); } } testFilter = nameFilter; } if ( options.include != null && options.include != string.Empty ) { TestFilter includeFilter = new CategoryExpression( options.include ).Filter; Console.WriteLine("Included categories: " + includeFilter.ToString()); if (testFilter.IsEmpty) testFilter = includeFilter; else testFilter = new AndFilter( testFilter, includeFilter ); } if ( options.exclude != null && options.exclude != string.Empty ) { TestFilter excludeFilter = new NotFilter( new CategoryExpression( options.exclude ).Filter ); Console.WriteLine("Excluded categories: " + excludeFilter.ToString()); if ( testFilter.IsEmpty ) testFilter = excludeFilter; else if ( testFilter is AndFilter ) ((AndFilter)testFilter).Add( excludeFilter ); else testFilter = new AndFilter( testFilter, excludeFilter ); } if (testFilter is NotFilter) ((NotFilter)testFilter).TopLevel = true; TestResult result = null; string savedDirectory = Environment.CurrentDirectory; TextWriter savedOut = Console.Out; TextWriter savedError = Console.Error; try { result = testRunner.Run( collector, testFilter, false, LoggingThreshold.Off ); } finally { outWriter.Flush(); errorWriter.Flush(); if ( redirectOutput ) outWriter.Close(); if ( redirectError ) errorWriter.Close(); Environment.CurrentDirectory = savedDirectory; Console.SetOut( savedOut ); Console.SetError( savedError ); } Console.WriteLine(); int returnCode = UNEXPECTED_ERROR; if (result != null) { string xmlOutput = CreateXmlOutput(result); ResultSummarizer summary = new ResultSummarizer(result); if (options.xmlConsole) { Console.WriteLine(xmlOutput); } else { WriteSummaryReport(summary); if (summary.ErrorsAndFailures > 0 || result.IsError || result.IsFailure) { if (options.stoponerror) { Console.WriteLine("Test run was stopped after first error, as requested."); Console.WriteLine(); } WriteErrorsAndFailuresReport(result); } if (summary.TestsNotRun > 0) WriteNotRunReport(result); if (!options.noresult) { // Write xml output here string xmlResultFile = options.result == null || options.result == string.Empty ? "TestResult.xml" : options.result; using (StreamWriter writer = new StreamWriter(Path.Combine(workDir, xmlResultFile))) { writer.Write(xmlOutput); } } } returnCode = summary.ErrorsAndFailures; } if ( collector.HasExceptions ) { collector.WriteExceptions(); returnCode = UNEXPECTED_ERROR; } return returnCode; } }
private static SimpleNameFilter MakeTestFilter(IEnumerable<TestCase> ptestCases) { var filter = new SimpleNameFilter(); foreach (TestCase testCase in ptestCases) { filter.Add(testCase.FullyQualifiedName); } return filter; }
public int Execute( ConsoleOptions options ) { TextWriter outWriter = Console.Out; bool redirectOutput = options.output != null && options.output != string.Empty; if ( redirectOutput ) { StreamWriter outStreamWriter = new StreamWriter( options.output ); outStreamWriter.AutoFlush = true; outWriter = outStreamWriter; } TextWriter errorWriter = Console.Error; bool redirectError = options.err != null && options.err != string.Empty; if ( redirectError ) { StreamWriter errorStreamWriter = new StreamWriter( options.err ); errorStreamWriter.AutoFlush = true; errorWriter = errorStreamWriter; } TestPackage package = MakeTestPackage(options); Console.WriteLine("ProcessModel: {0} DomainUsage: {1}", package.Settings.Contains("ProcessModel") ? package.Settings["ProcessModel"] : "Default", package.Settings.Contains("DomainUsage") ? package.Settings["DomainUsage"] : "Default"); Console.WriteLine("Execution Runtime: {0}", package.Settings.Contains("RuntimeFramework") ? package.Settings["RuntimeFramework"] : "Default"); using (TestRunner testRunner = new DefaultTestRunnerFactory().MakeTestRunner(package)) { testRunner.Load(package); if (testRunner.Test == null) { testRunner.Unload(); Console.Error.WriteLine("Unable to locate fixture {0}", options.fixture); return FIXTURE_NOT_FOUND; } EventCollector collector = new EventCollector( options, outWriter, errorWriter ); TestFilter testFilter = TestFilter.Empty; if ( options.run != null && options.run != string.Empty ) { Console.WriteLine( "Selected test(s): " + options.run ); testFilter = new SimpleNameFilter( options.run ); } if ( options.include != null && options.include != string.Empty ) { Console.WriteLine( "Included categories: " + options.include ); TestFilter includeFilter = new CategoryExpression( options.include ).Filter; if ( testFilter.IsEmpty ) testFilter = includeFilter; else testFilter = new AndFilter( testFilter, includeFilter ); } if ( options.exclude != null && options.exclude != string.Empty ) { Console.WriteLine( "Excluded categories: " + options.exclude ); TestFilter excludeFilter = new NotFilter( new CategoryExpression( options.exclude ).Filter ); if ( testFilter.IsEmpty ) testFilter = excludeFilter; else if ( testFilter is AndFilter ) ((AndFilter)testFilter).Add( excludeFilter ); else testFilter = new AndFilter( testFilter, excludeFilter ); } if (testFilter is NotFilter) ((NotFilter)testFilter).TopLevel = true; TestResult result = null; string savedDirectory = Environment.CurrentDirectory; TextWriter savedOut = Console.Out; TextWriter savedError = Console.Error; try { result = testRunner.Run( collector, testFilter ); } finally { outWriter.Flush(); errorWriter.Flush(); if ( redirectOutput ) outWriter.Close(); if ( redirectError ) errorWriter.Close(); Environment.CurrentDirectory = savedDirectory; Console.SetOut( savedOut ); Console.SetError( savedError ); } Console.WriteLine(); int returnCode = UNEXPECTED_ERROR; if (result != null) { string xmlOutput = CreateXmlOutput(result); ResultSummarizer summary = new ResultSummarizer(result); if (options.xmlConsole) { Console.WriteLine(xmlOutput); } else { WriteSummaryReport(summary); if (summary.ErrorsAndFailures > 0) WriteErrorsAndFailuresReport(result); if (summary.TestsNotRun > 0) WriteNotRunReport(result); } // Write xml output here string xmlResultFile = options.xml == null || options.xml == string.Empty ? "TestResult.xml" : options.xml; using (StreamWriter writer = new StreamWriter(xmlResultFile)) { writer.Write(xmlOutput); } returnCode = summary.ErrorsAndFailures; } if ( collector.HasExceptions ) { collector.WriteExceptions(); returnCode = UNEXPECTED_ERROR; } return returnCode; } }
static void Main(string[] args) { try { CoreExtensions.Host.InitializeService(); string assemblyName = ""; if (args.Length == 2) { assemblyName = args[1]; } else { Console.WriteLine("usage: VisualNunitRunner.exe [run|list|serve] file"); return; } if (args.Length == 2 && args[0] == "run") { // Run tests according to console input. ConsoleTraceListener consoleListener = new ConsoleTraceListener(); Trace.Listeners.Add(consoleListener); ConsoleTestRunListener runnerListener = new ConsoleTestRunListener(); SimpleNameFilter testFilter = new SimpleNameFilter(); testFilter.Add(Console.ReadLine()); TestSuite testSuite = new TestBuilder().Build(assemblyName, true); TestResult result = testSuite.Run(runnerListener, testFilter); if (result.StackTrace != null && result.StackTrace.Length > 0) { Trace.TraceError(result.StackTrace); } Console.WriteLine("beginning-of-test-result-xml"); StringBuilder builder = new StringBuilder(); new XmlResultWriter(new StringWriter(builder)).SaveTestResult(result); Console.WriteLine(builder.ToString()); } else if (args.Length == 2 && args[0] == "list") { // List tests to console output. ConsoleTraceListener consoleListener = new ConsoleTraceListener(); Trace.Listeners.Add(consoleListener); TestSuite testSuite = new TestBuilder().Build(assemblyName, true); Queue<ITest> testQueue = new Queue<ITest>(); testQueue.Enqueue(testSuite); while (testQueue.Count > 0) { ITest test = testQueue.Dequeue(); if (test.Tests != null) { foreach (ITest childTest in test.Tests) { testQueue.Enqueue(childTest); } } else { Console.WriteLine(test.TestName.FullName); } } } else if (args.Length == 2 && args[0] == "serve") { // Run in service mode to serve visual studio via named pipes. RunnerServer runnerServer = new RunnerServer(assemblyName); while (runnerServer.IsAlive) { Thread.Sleep(10); } System.Environment.Exit(0); } } catch (Exception e) { Trace.TraceError("VisualNunitRunner failed: "+e); } }
private bool CreateTestFilter(HostedOptions options, out TestFilter testFilter) { testFilter = TestFilter.Empty; SimpleNameFilter simpleNameFilter = new SimpleNameFilter(); if (testFilter is NotFilter) { ((NotFilter)testFilter).TopLevel = true; } return true; }
public void TestDoesNotMatch() { SimpleNameFilter filter = new SimpleNameFilter("NUnit.Tests.Assemblies.MockTestFixture.MockTest1"); Assert.IsFalse(filter.Pass(mock3), "Name Filter did pass test case"); Assert.IsTrue(filter.Pass(testSuite), "Name Filter did not pass test suite"); }
internal static bool CreateTestFilter(ConsoleOptions options, out TestFilter testFilter) { testFilter = TestFilter.Empty; SimpleNameFilter nameFilter = new SimpleNameFilter(); if (options.run != null && options.run != string.Empty) { Console.WriteLine("Selected test(s): " + options.run); foreach (string name in TestNameParser.Parse(options.run)) nameFilter.Add(name); testFilter = nameFilter; } if (options.runlist != null && options.runlist != string.Empty) { Console.WriteLine("Run list: " + options.runlist); try { using (StreamReader rdr = new StreamReader(options.runlist)) { // NOTE: We can't use rdr.EndOfStream because it's // not present in .NET 1.x. string line = rdr.ReadLine(); while (line != null && line.Length > 0) { if (line[0] != '#') nameFilter.Add(line); line = rdr.ReadLine(); } } } catch (Exception e) { if (e is FileNotFoundException || e is DirectoryNotFoundException) { Console.WriteLine("Unable to locate file: " + options.runlist); return false; } throw; } testFilter = nameFilter; } if (options.include != null && options.include != string.Empty) { TestFilter includeFilter = new CategoryExpression(options.include).Filter; Console.WriteLine("Included categories: " + includeFilter.ToString()); if (testFilter.IsEmpty) testFilter = includeFilter; else testFilter = new AndFilter(testFilter, includeFilter); } if (options.exclude != null && options.exclude != string.Empty) { TestFilter excludeFilter = new NotFilter(new CategoryExpression(options.exclude).Filter); Console.WriteLine("Excluded categories: " + excludeFilter.ToString()); if (testFilter.IsEmpty) testFilter = excludeFilter; else if (testFilter is AndFilter) ((AndFilter) testFilter).Add(excludeFilter); else testFilter = new AndFilter(testFilter, excludeFilter); } if (testFilter is NotFilter) ((NotFilter) testFilter).TopLevel = true; return true; }
public void MultipleSuiteNameMatch() { testSuite.Add(TestBuilder.MakeFixture(typeof(OneTestCase))); NUnit.Core.TestSuite mockTestFixture = (NUnit.Core.TestSuite)TestFinder.Find("MockTestFixture", testSuite, true); NUnit.Core.TestSuite oneTestCaseFixture = (NUnit.Core.TestSuite)TestFinder.Find("OneTestCase", testSuite, true); SimpleNameFilter filter = new SimpleNameFilter("NUnit.Tests.Assemblies.MockTestFixture,NUnit.Tests.Singletons.OneTestCase"); Assert.IsTrue(filter.Pass(mock3), "Name Filter did not pass test case"); Assert.IsTrue(filter.Pass(mockTestFixture), "Fixture did not pass test case"); Assert.IsTrue(filter.Pass(oneTestCaseFixture), "Fixture did not pass test case"); Assert.IsTrue(filter.Pass(testSuite), "Suite did not pass test case"); }
public int Execute(ConsoleOptions options) { var outWriter = System.Console.Out; var redirectOutput = options.output != null && options.output != string.Empty; if (redirectOutput) { var outStreamWriter = new StreamWriter(options.output); outStreamWriter.AutoFlush = true; outWriter = outStreamWriter; } var errorWriter = System.Console.Error; var redirectError = options.err != null && options.err != string.Empty; if (redirectError) { var errorStreamWriter = new StreamWriter(options.err); errorStreamWriter.AutoFlush = true; errorWriter = errorStreamWriter; } var package = MakeTestPackage(options); System.Console.WriteLine("ProcessModel: {0} DomainUsage: {1}", package.Settings.Contains("ProcessModel") ? package.Settings["ProcessModel"] : "Default", package.Settings.Contains("DomainUsage") ? package.Settings["DomainUsage"] : "Default"); System.Console.WriteLine("Execution Runtime: {0}", package.Settings.Contains("RuntimeFramework") ? package.Settings["RuntimeFramework"] : "Default"); var collector = new EventCollector(options, outWriter, errorWriter); var testFilter = TestFilter.Empty; if (options.run != null && options.run != string.Empty) { System.Console.WriteLine("Selected test(s): " + options.run); testFilter = new SimpleNameFilter(options.run); } if (options.include != null && options.include != string.Empty) { System.Console.WriteLine("Included categories: " + options.include); var includeFilter = new CategoryExpression(options.include).Filter; if (testFilter.IsEmpty) testFilter = includeFilter; else testFilter = new AndFilter(testFilter, includeFilter); } if (options.exclude != null && options.exclude != string.Empty) { System.Console.WriteLine("Excluded categories: " + options.exclude); TestFilter excludeFilter = new NotFilter(new CategoryExpression(options.exclude).Filter); if (testFilter.IsEmpty) testFilter = excludeFilter; else if (testFilter is AndFilter) ((AndFilter)testFilter).Add(excludeFilter); else testFilter = new AndFilter(testFilter, excludeFilter); } if (testFilter is NotFilter) ((NotFilter)testFilter).TopLevel = true; TestResult result; var returnCode = DoRun(options, redirectOutput, redirectError, package, outWriter, errorWriter, testFilter, out result, collector); if (returnCode != 0) return returnCode; returnCode = UNEXPECTED_ERROR; if (result != null) { var xmlOutput = CreateXmlOutput(result); var summary = new ResultSummarizer(result); if (options.xmlConsole) { System.Console.WriteLine(xmlOutput); } else { WriteSummaryReport(summary); if (summary.ErrorsAndFailures > 0) WriteErrorsAndFailuresReport(result); if (summary.TestsNotRun > 0) WriteNotRunReport(result); } // Write xml output here var xmlResultFile = options.xml == null || options.xml == string.Empty ? "TestResult.xml" : options.xml; using (var writer = new StreamWriter(xmlResultFile)) { writer.Write(xmlOutput); } returnCode = summary.ErrorsAndFailures; } if (collector.HasExceptions) { collector.WriteExceptions(); returnCode = UNEXPECTED_ERROR; } return returnCode; }
/// <summary> /// Runs the requested test and return result XML. /// </summary> /// <param name="testName"></param> /// <returns>Result XML document</returns> private string RunTest(string testName, bool explicitRun) { // Execute the give test. SimpleNameFilter testFilter = new SimpleNameFilter(); testFilter.Add(testName); TestSuite testSuite = new TestBuilder().Build(assemblyName, true); //TestResult result = testSuite.Run(this, testFilter); TestResult result = null; Queue<ITest> testQueue = new Queue<ITest>(); testQueue.Enqueue(testSuite); while (testQueue.Count > 0) { ITest test = testQueue.Dequeue(); if (test.Tests != null) { foreach (ITest childTest in test.Tests) { testQueue.Enqueue(childTest); } } else { if (test.TestName.FullName.Equals(testName)) { if (!explicitRun && test.RunState == RunState.Explicit) { result = new TestResult(test.TestName); } else { result = ((Test)test).Run(this, null); } } } } // Trace error stack trace. if (result.StackTrace != null && result.StackTrace.Length > 0) { Trace.TraceError(result.StackTrace); } // Serialize result to XML. StringBuilder builder = new StringBuilder(); new XmlResultWriter(new StringWriter(builder)).SaveTestResult(result); return builder.ToString(); }
private object RunFixture(string name) { var invalid = new { text = "Please select a valid fixture", status = "info" }; if (String.IsNullOrWhiteSpace(name)) return new { message = invalid }; if (!tests.Any(t => t.ClassName.Equals(name))) return new { message = invalid }; var namesToAdd = tests .Where(t => t.ClassName.Equals(name)) .OrderBy(t => t.TestName.TestID.ToString()) .Select(t => t.TestName.FullName) .ToArray(); var simpleNameFilter = new SimpleNameFilter(namesToAdd); return RunTests(simpleNameFilter); }
protected ITestFilter ConstructFilter() { var categories = (from ListItem item in cblCategories.Items where item.Selected select item.Value).ToArray(); var methodNames = (from ListItem item in cblMethods.Items where item.Selected select item.Value).ToArray(); if (!categories.Any() && !methodNames.Any()) return TestFilter.Empty; var categoryFilter = new CategoryFilter(categories); var methodFilter = new SimpleNameFilter(methodNames); return new OrFilter(categoryFilter, methodFilter); }
private object RunTest(string id) { var invalid = new { text = "Please select a valid test", status = "info" }; if (String.IsNullOrWhiteSpace(id)) return new { message = invalid }; var test = tests.FirstOrDefault(t => t.TestName.FullName.Equals(id)); if (test == null) return new { message = invalid }; var simpleNameFilter = new SimpleNameFilter(id); return RunTests(simpleNameFilter); }
public void ExplicitTestCaseDoesNotMatchWhenNotSelectedDirectly() { Test explicitTest = TestFinder.Find("ExplicitlyRunTest", testSuite, true); SimpleNameFilter filter = new SimpleNameFilter("Mock Test Suite"); Assert.AreEqual(false, filter.Pass(explicitTest)); }