示例#1
0
		public TestResult Run (EventListener listener, ITestFilter filter, string path, string suiteName, List<string> supportAssemblies, string testRunnerType, string testRunnerAssembly)
		{
			InitSupportAssemblies (supportAssemblies);
			
			if (filter == null)
				filter = TestFilter.Empty;

			TestRunner tr;
			if (!string.IsNullOrEmpty (testRunnerType)) {
				Type runnerType;
				if (string.IsNullOrEmpty (testRunnerAssembly))
					runnerType = Type.GetType (testRunnerType, true);
				else {
					var asm = Assembly.LoadFrom (testRunnerAssembly);
					runnerType = asm.GetType (testRunnerType);
				}
				tr = (TestRunner)Activator.CreateInstance (runnerType);
			} else
				tr = new RemoteTestRunner ();

			TestPackage package = new TestPackage (path);
			if (!string.IsNullOrEmpty (suiteName))
				package.TestName = suiteName;
			tr.Load (package);
			return tr.Run (listener, filter, false, LoggingThreshold.All);
		}
示例#2
0
        public override TestResult Run(EventListener listener, ITestFilter filter)
        {
            using (new global::NUnit.Core.TestContext())
            {
                var testResult = new TestResult(this);
                Log.Debug("Test Starting: " + TestName.FullName);
                listener.TestStarted(TestName);
                var stopwatch = new Stopwatch();
                stopwatch.Start();

                switch (RunState)
                {
                    case RunState.Runnable:
                    case RunState.Explicit:
                        DoTest(_test, testResult);
                        break;
                    case RunState.NotRunnable:
                        testResult.Invalid(IgnoreReason);
                        break;
                    case RunState.Ignored:
                        testResult.Ignore(IgnoreReason);
                        break;
                    default:
                        testResult.Skip(IgnoreReason);
                        break;

                }

                stopwatch.Stop();
                testResult.Time = stopwatch.Elapsed.Seconds;

                listener.TestFinished(testResult);
                return testResult;
            }
        }
示例#3
0
        public override TestResult Run(EventListener listener, ITestFilter filter)
        {
            var successCount = 0;
            TestResult failureResult = null;

            for (var i = 0; i < this.tryCount; i++)
            {
                var result = base.Run(listener, filter);

                if (!TestFailed(result))
                {
                    if (i == 0)
                    {
                        return result;
                    }

                    if (++successCount >= this.requiredPassCount)
                    {
                        return result;
                    }
                }
                else
                {
                    failureResult = result;
                }
            }

            return failureResult;
        }
        public override TestResult Run(EventListener listener, ITestFilter filter)
        {
            listener.TestStarted(base.TestName);
            long ticks = DateTime.Now.Ticks;
            var testResult = new TestResultShim();

            Exception existingError = null;

            _globalSetup.PrepareForTestPosition(Position, out existingError);

            if (existingError != null)
            {
                TestResultUtil.Error(testResult, TestExtensions.GetMultilineName(this), existingError, null, TestResultShim.Site.SetUp);
            }
            else
            {
                List<string> traceMessages = null;
                try
                {
                    RunTestMethod(testResult, out traceMessages);
                }
                catch (Exception e)
                {
                    var globalTraceMessages = _globalSetup.GetTraceMessages();
                    TestResultUtil.Error(testResult, TestExtensions.GetMultilineName(this), e, globalTraceMessages.Concat(traceMessages));
                }
            }

            var nunitTestResult = new TestResult(this);
            NativeTestResult.ApplyToNunitResult(testResult, nunitTestResult);
            nunitTestResult.Time = ((DateTime.Now.Ticks - ticks)) / 10000000.0;
            listener.TestFinished(nunitTestResult);
            return nunitTestResult;
        }
示例#5
0
        public override TestResult Run(EventListener listener, ITestFilter filter)
        {
            var result = new TestResult(this);

            lock (testClosure) {
                try {
                    testClosure.TestMethod();
                    TestNonExceptionCondition(result);
                } catch (IgnoreException iex) {
                    result.Ignore(iex.Message);
                } catch (InconclusiveException icex) {
                    result.Invalid(icex.Message);
                } catch (Exception ex) {
                    TestExceptionCondition(result, ex);
                }

                try {
                    testClosure.TearDown();
                } catch (Exception ex) {
                    result.Failure("Exception in tear-down: "+ex.Message, ex.StackTrace);
                }
            }

            listener.TestFinished(result);
            return result;
        }
        public override TestResult Run(EventListener listener, ITestFilter filter)
        {
            listener.TestStarted(base.TestName);
            long ticks = DateTime.Now.Ticks;
            TestResult testResult = new TestResult(this);

            Exception existingError = null;

            _globalSetup.PrepareForTestPosition(Position, out existingError);

            if (existingError != null)
            {
                TestResultUtil.Error(testResult, existingError, null, FailureSite.SetUp);
            }
            else
            {
                List<string> traceMessages = null;
                try
                {
                    RunTestMethod(testResult, out traceMessages);
                }
                catch (Exception e)
                {
                    var globalTraceMessages = _globalSetup.GetTraceMessages();
                    TestResultUtil.Error(testResult, e, globalTraceMessages.Concat(traceMessages));
                }
            }

            double num3 = ((double)(DateTime.Now.Ticks - ticks)) / 10000000.0;
            testResult.Time = num3;
            listener.TestFinished(testResult);
            return testResult;
        }
示例#7
0
		public override TestResult Run(EventListener listener, ITestFilter filter)
		{
			using ( new DirectorySwapper( AssemblyHelper.GetDirectoryName( FixtureType.Assembly ) ) )
			{
				return base.Run(listener, filter);
			}
		}
        public override TestResult Run(EventListener listener, ITestFilter filter)
        {
            listener.SuiteStarted(this.TestName);

            var suiteListener = new MuteSuiteListener(listener);

            var fixtureResult = base.Run(suiteListener, TestFilter.Empty);
            var testResult = fixtureResult.Results[0] as TestResult;

            if (testResult != null)
            {
                if (testResult.IsFailure || testResult.IsError)
                {
                    fixtureResult.SetResult(testResult.ResultState,
                                            testResult.Message,
                                            testResult.StackTrace);
                }
                if (testResult.IsSuccess)
                {
                    fixtureResult.Success();
                }
            }

            listener.SuiteFinished(fixtureResult);
            return fixtureResult;
        }
 public override TestResult Run(EventListener listener, ITestFilter filter)
 {
     using ( new DirectorySwapper( Path.GetDirectoryName( TestFixtureBuilder.GetAssemblyPath( FixtureType ) ) ) )
     {
         return base.Run(listener, filter);
     }
 }
        /// <summary>
        /// Override Run, setting Fixture to that of the Parent.
        /// </summary>
        /// <param name="listener"></param>
        /// <param name="filter"></param>
        /// <returns></returns>
        public override TestResult Run(EventListener listener, ITestFilter filter)
        {
            if (this.Parent != null)
            {
                this.Fixture = this.Parent.Fixture;
                TestSuite suite = this.Parent as TestSuite;
                if (suite != null)
                {
                    this.setUpMethods = suite.GetSetUpMethods();
                    this.tearDownMethods = suite.GetTearDownMethods();
                }
            }

            // DYNAMIC: Get the parameters, and add the methods here.

            TestResult result = base.Run(listener, filter);

            if (this.isTheory && result.ResultState == ResultState.Inconclusive)
                result.SetResult(
                    ResultState.Failure,
                    this.TestCount == 0
                        ? "No test cases were provided"
                        : "All test cases were inconclusive",
                    null);

            this.Fixture = null;
            this.setUpMethods = null;
            this.tearDownMethods = null;

            return result;
        }
示例#11
0
		public override int CountTestCases( ITestFilter filter ) 
		{
			if (filter.Pass(this))
				return 1;

			return 0;
		}
示例#12
0
        public override TestResult Run(EventListener listener, ITestFilter filter)
        {
            TestSuiteResult suite_result = new TestSuiteResult (new TestInfo (this), TestName.FullName);

            DebuggerTestHost host = DebuggerTestHost.Create ();
            if (host == null) {
                TestCaseResult error = new TestCaseResult (new TestInfo (this));
                string msg = String.Format ("Failed to create DebuggerTestHost in {0}", FixtureType.Name);
                error.Failure (msg, null, FailureSite.Parent);
                suite_result.AddResult (error);
                return suite_result;
            }

            int timeout;
            if (Attribute.Timeout != 0)
                timeout = Attribute.Timeout;
            else
                timeout = DebuggerTestAddIn.DefaultTimeout;

            int repeat = 1;
            if (Attribute.Repeat != 0)
                repeat = Attribute.Repeat;

            try {
                for (int i = 0; i < repeat; i++) {
                    if (!host.Run (new TestInfo (this), suite_result, Type.AssemblyQualifiedName, listener, filter, timeout))
                        break;
                }

                return suite_result;
            } finally {
                host.Dispose ();
            }
        }
示例#13
0
		public override TestResult Run(EventListener listener, ITestFilter filter)
		{
			if (this.Parent != null)
				this.Fixture = this.Parent.Fixture;
			
			return base.Run(listener, filter);
		}
        public override TestResult Run(EventListener listener, ITestFilter filter)
        {
        	test.Parent = Parent;

			TestResult result = null;
			for (var i = 1; i < retryCount; i++)
            {
            	try
            	{
            		result = test.Run(listener, filter);
            		if (result.IsFailure || result.IsError)
            		{
            			var message = string.Format("Rerunning '{0}'", TestName);
            			Log.Info(message); Console.WriteLine(message);
            			result = test.Run(listener, filter);
            		}
            	}
				// In Case SetUp or TearDown failed
				catch (Exception e)
            	{
					Log.Info(e.Message); Console.WriteLine(e);
            	}
            }

            return result;
        }
示例#15
0
 public override TestResult Run(EventListener listener, ITestFilter filter)
 {
     Uri uri = new Uri( FixtureType.Assembly.CodeBase );
     using ( new DirectorySwapper( Path.GetDirectoryName( uri.LocalPath ) ) )
     {
         return base.Run(listener, filter);
     }
 }
示例#16
0
		public UnitTestResult Run (IRemoteEventListener listener, ITestFilter filter, string path, string suiteName, List<string> supportAssemblies)
		{
			NUnitTestRunner runner = GetRunner (path);
			EventListenerWrapper listenerWrapper = listener != null ? new EventListenerWrapper (listener) : null;
			
			TestResult res = runner.Run (listenerWrapper, filter, path, suiteName, supportAssemblies);
			return listenerWrapper.GetLocalTestResult (res);
		}
示例#17
0
 static public WorkItem CreateWorkItem(Test test, TestExecutionContext context, ITestFilter filter)
 {
     TestSuite suite = test as TestSuite;
     if (suite != null)
         return new CompositeWorkItem(suite, context, filter);
     else
         return new SimpleWorkItem((TestMethod)test, context);
 }
示例#18
0
 public static WorkItem CreateWorkItem(Test test, TestExecutionContext context, ITestFilter filter)
 {
     TestSuite suite = test as TestSuite;
     if (suite != null && (suite.RunState == RunState.Runnable || suite.RunState == RunState.Explicit))
         return new CompositeWorkItem(suite, context, filter);
     else
         return new SimpleWorkItem(test, context);
 }
示例#19
0
 /// <summary>
 /// Creates a work item.
 /// </summary>
 /// <param name="test">The test for which this WorkItem is being created.</param>
 /// <param name="filter">The filter to be used in selecting any child Tests.</param>
 /// <returns></returns>
 static public WorkItem CreateWorkItem(ITest test, ITestFilter filter)
 {
     TestSuite suite = test as TestSuite;
     if (suite != null)
         return new CompositeWorkItem(suite, filter);
     else
         return new SimpleWorkItem((TestMethod)test, filter);
 }
示例#20
0
 /// <summary>
 /// Construct a CompositeWorkItem for executing a test suite
 /// using a filter to select child tests.
 /// </summary>
 /// <param name="suite">The TestSuite to be executed</param>
 /// <param name="context">The execution context to be used</param>
 /// <param name="childFilter">A filter used to select child tests</param>
 public CompositeWorkItem(TestSuite suite, TestExecutionContext context, ITestFilter childFilter)
     : base(suite, context)
 {
     _suite = suite;
     _setupCommand = suite.GetOneTimeSetUpCommand();
     _teardownCommand = suite.GetOneTimeTearDownCommand();
     _childFilter = childFilter;
 }
示例#21
0
		public TouchRunner (UIWindow window)
		{
			if (window == null)
				throw new ArgumentNullException ("window");
			
			this.window = window;
			filter = TestFilter.Empty;
		}
 public TestRunAction BuildTestRunAction(string name, int index, ITestFilter filter)
 {
     return new TestRunAction
     {
         Name = name,
         Index = index,
         RunTests = () => BuildFilteredBlockingProcess(name, filter)
     };
 }
 public override TestResult Run(EventListener listener, ITestFilter filter)
 {
     listener.TestStarted(base.TestName);
     long ticks = DateTime.Now.Ticks;
     TestResult result = new TestResult(this);
     result.SetResult(ResultState.NotRunnable, "Specification not implemented.", null, FailureSite.Test);
     double num3 = ((double)(DateTime.Now.Ticks - ticks)) / 10000000.0;
     result.Time = num3;
     listener.TestFinished(result);
     return result;
 }
 public override TestResult Run(EventListener listener, ITestFilter filter)
 {
     listener.TestStarted(base.TestName);
     long ticks = DateTime.Now.Ticks;
     TestResult testResult = new TestResult(this);
     testResult.Failure(_reason, _stackTrace);
     double num3 = ((double)(DateTime.Now.Ticks - ticks)) / 10000000.0;
     testResult.Time = num3;
     listener.TestFinished(testResult);
     return testResult;
 }
 public TestRunAction BuildTestRunAction(string name, int index, ITestFilter filter)
 {
     //var anyOthers = new CategoryRunner(_assemblyLocation, other, "all", outputPath, countdownEvent);
     var runner = new CategoryRunner(_assemblyLocation, filter, BuildOutputXmlPath(name));
     return new TestRunAction
     {
         Name = name,
         Index = index,
         RunTests = () => runner.Execute()
     };
 }
示例#26
0
        public CategoryRunner(
            string assemblyLocation,
            ITestFilter filter,
            string outputXmlFile)
        {
            _assemblyLocation = assemblyLocation;
            Filter = filter;
            _outputXmlFile = outputXmlFile;

            MarkAsInitalized();
        }
示例#27
0
        /// <summary>
        /// Create a WorkItem appropriate for the test to be run
        /// </summary>
        /// <param name="test">The test to be executed</param>
        /// <param name="context">The execution context in which the test will be run</param>
        /// <param name="filter">A filter for selecting chind tests</param>
        /// <returns></returns>
        public static WorkItem CreateWorkItem(Test test, TestExecutionContext context, ITestFilter filter)
        {
            if (test.RunState != RunState.Runnable && test.RunState != RunState.Explicit)
                return new SimpleWorkItem(new SkipCommand(test), context);

            TestSuite suite = test as TestSuite;
            if (suite != null)
                return new CompositeWorkItem(suite, context, filter);

            return new SimpleWorkItem((TestMethod)test, context);
        }
示例#28
0
 public TestResult Run(string test_name, EventListener listener, ITestFilter filter)
 {
     try {
         Type test_type = Type.GetType (test_name, true);
         NUnit.Core.Test test = builder.BuildFrom (test_type);
         TestResult result = test.Run (listener, filter);
         return result;
     } catch (Exception ex) {
         Console.WriteLine ("RUN EX: {0}", ex);
         throw;
     }
 }
示例#29
0
		public override TestResult Run( EventListener listener, ITestFilter filter )
		{
			NTrace.Debug( "Running test synchronously" );
			QueuingEventListener queue = new QueuingEventListener();

			StartTextCapture( queue );

			using( EventPump pump = new EventPump( listener, queue.Events, true ) )
			{
				pump.Start();
				return base.Run( queue, filter );
			}
		}
示例#30
0
		public override void BeginRun( EventListener listener, ITestFilter filter )
		{
			NTrace.Debug( "Running test asynchronously" );
			QueuingEventListener queue = new QueuingEventListener();

			StartTextCapture( queue );

			EventPump pump = new EventPump( listener, queue.Events, true);
			pump.Start(); // Will run till RunFinished is received
			// TODO: Make sure the thread is cleaned up if we abort the run
		
			base.BeginRun( queue, filter );
		}
 protected override UnityWorkItem Create(TestMethod method, ITestFilter filter, ITest loadedTest)
 {
     return(new EditorEnumeratorTestWorkItem(method, filter));
 }
示例#32
0
 /// <summary>
 /// Creates a WorkItem for executing this test.
 /// </summary>
 /// <param name="childFilter">A filter to be used in selecting child tests</param>
 /// <returns>A new WorkItem</returns>
 public abstract WorkItem CreateWorkItem(ITestFilter childFilter, FinallyDelegate finD);
示例#33
0
 /// <summary>
 /// Construct a not filter on another filter
 /// </summary>
 /// <param name="baseFilter">The filter to be negated</param>
 public NotFilter(ITestFilter baseFilter)
 {
     this.baseFilter = baseFilter;
 }
示例#34
0
        public bool Run(TestInfo test, TestSuiteResult suite_result, string test_name, EventListener listener, ITestFilter filter, int timeout)
        {
            listener = new ProxyListener(listener);

            TestRunnerDelegate runner = new TestRunnerDelegate(delegate {
                return(server.Run(test_name, listener, filter));
            });

            IAsyncResult ar = runner.BeginInvoke(test_name, null, filter, null, null);

            if (!ar.AsyncWaitHandle.WaitOne(timeout) || !ar.IsCompleted)
            {
                TestCaseResult error = new TestCaseResult(test);
                string         msg   = String.Format("Timeout after {0} ms", timeout);
                error.Failure(msg, null, FailureSite.Parent);
                suite_result.AddResult(error);
                return(false);
            }

            try {
                TestResult result = runner.EndInvoke(ar);
                if (result != null)
                {
                    suite_result.AddResult(result);
                    return(true);
                }

                TestCaseResult error = new TestCaseResult(test);
                error.Failure("Unknown error", null, FailureSite.Parent);
                suite_result.AddResult(error);
                return(false);
            } catch (Exception ex) {
                TestCaseResult error = new TestCaseResult(test);
                string         msg   = String.Format("Unknown exception: {0}", ex);
                error.Failure(msg, null, FailureSite.Parent);
                suite_result.AddResult(error);
                return(false);
            }
        }
示例#35
0
 /// <summary>
 /// Creates a filtered copy of the test suite.
 /// </summary>
 /// <param name="filter">Determines which descendants are copied.</param>
 public override TestSuite Copy(ITestFilter filter)
 {
     return(new SetUpFixture(this, filter));
 }
示例#36
0
 /// <summary>
 /// Construct a simple work item for a test.
 /// </summary>
 /// <param name="test">The test to be executed</param>
 /// <param name="filter">The filter used to select this test</param>
 public SimpleWorkItem(TestMethod test, ITestFilter filter)
     : base(test, filter)
 {
     _testMethod = test;
 }
示例#37
0
        public override async Task <IEnumerable <string> > GetCategories(ITestFilter filter)
        {
            var categoryList = await Task.WhenAll(Runners.Select(r => r.GetCategories(filter)));

            return(categoryList.SelectMany(r => r).Distinct());
        }
示例#38
0
 /// <summary>
 /// Run selected tests and return a test result. The test is run synchronously,
 /// and the listener interface is notified as it progresses.
 /// </summary>
 /// <param name="listener">Interface to receive EventListener notifications.</param>
 /// <param name="filter">A test filter used to select tests to be run</param>
 /// <returns></returns>
 public ITestResult Run(ITestListener listener, ITestFilter filter)
 {
     RunAsync(listener, filter);
     WaitForCompletion(Timeout.Infinite);
     return(Result);
 }
示例#39
0
 private void MarkTestsNotRun(
     IList tests, ResultState resultState, string ignoreReason, TestResult suiteResult, EventListener listener, ITestFilter filter)
 {
     foreach (Test test in ArrayList.Synchronized(tests))
     {
         if (filter.Pass(test))
         {
             MarkTestNotRun(test, resultState, ignoreReason, suiteResult, listener, filter);
         }
     }
 }
示例#40
0
 private void MarkTestNotRun(
     Test test, ResultState resultState, string ignoreReason, TestResult suiteResult, EventListener listener, ITestFilter filter)
 {
     if (test is TestSuite)
     {
         listener.SuiteStarted(test.TestName);
         TestResult result = new TestResult(new TestInfo(test));
         result.SetResult(resultState, ignoreReason, null);
         MarkTestsNotRun(test.Tests, resultState, ignoreReason, suiteResult, listener, filter);
         suiteResult.AddResult(result);
         listener.SuiteFinished(result);
     }
     else
     {
         listener.TestStarted(test.TestName);
         TestResult result = new TestResult(new TestInfo(test));
         result.SetResult(resultState, ignoreReason, null);
         suiteResult.AddResult(result);
         listener.TestFinished(result);
     }
 }
示例#41
0
 private void MarkAllTestsInvalid(TestResult suiteResult, EventListener listener, ITestFilter filter)
 {
     suiteResult.Invalid(this.IgnoreReason);
     MarkTestsNotRun(this.Tests, ResultState.NotRunnable, this.IgnoreReason, suiteResult, listener, filter);
 }
示例#42
0
 private void IgnoreAllTests(TestResult suiteResult, EventListener listener, ITestFilter filter)
 {
     suiteResult.Ignore(this.IgnoreReason);
     MarkTestsNotRun(this.Tests, ResultState.Ignored, this.IgnoreReason, suiteResult, listener, filter);
 }
示例#43
0
 /// <summary>
 /// Construct a CompositeWorkItem for executing a test suite
 /// using a filter to select child tests.
 /// </summary>
 /// <param name="suite">The TestSuite to be executed</param>
 /// <param name="childFilter">A filter used to select child tests</param>
 public CompositeWorkItem(TestSuite suite, ITestFilter childFilter)
     : base(suite, childFilter)
 {
     _suite       = suite;
     _suiteResult = Result as TestSuiteResult;
 }
示例#44
0
 /// <summary>
 /// Copy-constructor style to create a filtered copy of the test assemblies
 /// test cases
 /// </summary>
 /// <param name="assembly"></param>
 /// <param name="filter"></param>
 public TestAssembly(TestAssembly assembly, ITestFilter filter)
     : base(assembly as TestSuite, filter)
 {
     this.Name     = assembly.Name;
     this.Assembly = assembly.Assembly;
 }
示例#45
0
        public override async Task <int> GetTestCount(ITestFilter filter)
        {
            var countList = await Task.WhenAll(Runners.Select(r => r.GetTestCount(filter)));

            return(countList.Sum());
        }
示例#46
0
 /// <summary>
 /// Runs the test under a particular filter, sending
 /// notifications to a listener.
 /// </summary>
 /// <param name="listener">An event listener to receive notifications</param>
 /// <param name="filter">A filter used in running the test</param>
 /// <returns></returns>
 public abstract TestResult Run(EventListener listener, ITestFilter filter);
示例#47
0
 public override Task <IEnumerable <string> > GetCategories(ITestFilter filter)
 {
     return(Task.FromResult(Enumerable.Empty <string>()));
 }
        public int CountTestCases(string filter)
        {
            ITestFilter v2Filter = CreateNUnit2TestFilter(filter);

            return(_runner.CountTestCases(v2Filter));
        }
示例#49
0
 public DefaultTestWorkItem(TestMethod test, ITestFilter filter)
     : base(test, null)
 {
     _command = TestCommandBuilder.BuildTestCommand(test, filter);
 }
 public override TestSuite Copy(ITestFilter filter)
 {
     return(new ParameterizedMethodSuite(this, filter));
 }
示例#51
0
 /// <summary>
 /// Creates a copy of the given suite with only the descendants that pass the specified filter.
 /// </summary>
 /// <param name="setUpFixture">The <see cref="SetUpFixture"/> to copy.</param>
 /// <param name="filter">Determines which descendants are copied.</param>
 public SetUpFixture(SetUpFixture setUpFixture, ITestFilter filter)
     : base(setUpFixture, filter)
 {
 }
示例#52
0
        public TestExplorer(IExplorerView view, IEventAggregator events, ITestFilterBar filterBar, ITestFilter filter,
                            IIconService icons)
        {
            _view   = view;
            _events = events;
            _filter = filter;
            _icons  = icons;

            if (filterBar != null)
            {
                filterBar.Observer = this;
            }
            _navigator = new SuiteNavigator
            {
                TestFilter  = _filter.Matches,
                SuiteFilter = _filter.Matches
            };
        }
示例#53
0
 /// <summary>
 /// Creates a WorkItem for executing this test.
 /// </summary>
 /// <param name="childFilter">A filter to be used in selecting child tests</param>
 /// <returns>A new WorkItem</returns>
 public override WorkItem CreateWorkItem(ITestFilter childFilter)
 {
     // For simple test cases, we ignore the filter
     return(new SimpleWorkItem(this));
 }
示例#54
0
 public static TestResult Run(TestRunner runner, EventCollector listener, ITestFilter filter)
 {
     return(runner.Run(listener, filter));
 }
        /// <summary>
        /// Execute a test run based on the aruments passed
        /// from Main.
        /// </summary>
        /// <param name="args">An array of arguments</param>
        public void Execute(string[] args)
        {
            this.commandLineOptions = new CommandLineOptions();
            commandLineOptions.Parse(args);

            if (commandLineOptions.OutFile != null)
            {
                this.writer = new StreamWriter(commandLineOptions.OutFile);
            }

            if (!commandLineOptions.NoHeader)
            {
                WriteHeader(this.writer);
            }

            if (commandLineOptions.ShowHelp)
            {
                writer.Write(commandLineOptions.HelpText);
            }
            else if (commandLineOptions.Error)
            {
                writer.WriteLine(commandLineOptions.ErrorMessage);
                writer.WriteLine(commandLineOptions.HelpText);
            }
            else
            {
                WriteRuntimeEnvironment(this.writer);

                if (commandLineOptions.Wait && commandLineOptions.OutFile != null)
                {
                    writer.WriteLine("Ignoring /wait option - only valid for Console");
                }

#if SILVERLIGHT
                IDictionary loadOptions = new System.Collections.Generic.Dictionary <string, string>();
#else
                IDictionary loadOptions = new Hashtable();
#endif
                //if (options.Load.Count > 0)
                //    loadOptions["LOAD"] = options.Load;

                //IDictionary runOptions = new Hashtable();
                //if (commandLineOptions.TestCount > 0)
                //    runOptions["RUN"] = commandLineOptions.Tests;

                ITestFilter filter = commandLineOptions.TestCount > 0
                    ? new SimpleNameFilter(commandLineOptions.Tests)
                    : TestFilter.Empty;

                try
                {
                    foreach (string name in commandLineOptions.Parameters)
                    {
                        try {
                            assemblies.Add(Assembly.LoadFrom(name));
                        }
                        catch (FileNotFoundException /* e*/) {
                            assemblies.Add(Assembly.Load(name));
                        }
                    }

                    if (assemblies.Count == 0)
                    {
                        // NOTE: Execute must be directly called from the
                        // test assembly in order for the mechanism to work.
                        Assembly callingAssembly = Assembly.GetCallingAssembly();
                        assemblies.Add(callingAssembly);
                    }

                    // TODO: For now, ignore all but first assembly
                    Assembly assembly = assemblies[0] as Assembly;

                    Randomizer.InitialSeed = commandLineOptions.InitialSeed;

                    if (!runner.Load(assembly, loadOptions))
                    {
                        AssemblyName assemblyName = AssemblyHelper.GetAssemblyName(assembly);
                        Console.WriteLine("No tests found in assembly {0}", assemblyName.Name);
                        return;
                    }

                    if (commandLineOptions.Explore)
                    {
                        ExploreTests();
                    }
                    else
                    {
                        if (commandLineOptions.Include != null && commandLineOptions.Include != string.Empty)
                        {
                            TestFilter includeFilter = new SimpleCategoryExpression(commandLineOptions.Include).Filter;

                            if (filter.IsEmpty)
                            {
                                filter = includeFilter;
                            }
                            else
                            {
                                filter = new AndFilter(filter, includeFilter);
                            }
                        }

                        if (commandLineOptions.Exclude != null && commandLineOptions.Exclude != string.Empty)
                        {
                            TestFilter excludeFilter = new NotFilter(new SimpleCategoryExpression(commandLineOptions.Exclude).Filter);

                            if (filter.IsEmpty)
                            {
                                filter = excludeFilter;
                            }
                            else if (filter is AndFilter)
                            {
                                ((AndFilter)filter).Add(excludeFilter);
                            }
                            else
                            {
                                filter = new AndFilter(filter, excludeFilter);
                            }
                        }

#if MONO
                        filter = Xamarin.BabysitterSupport.AddBabysitterFilter(filter);
#endif
                        RunTests(filter);
                    }
                }
                catch (FileNotFoundException ex)
                {
                    Failure = true;
                    writer.WriteLine(ex.Message);
                }
                catch (Exception ex)
                {
                    Failure = true;
                    writer.WriteLine(ex.ToString());
                }
                finally
                {
                    if (commandLineOptions.OutFile == null)
                    {
                        if (commandLineOptions.Wait)
                        {
                            Console.WriteLine("Press Enter key to continue . . .");
                            Console.ReadLine();
                        }
                    }
                    else
                    {
                        writer.Close();
                    }
                }
            }
        }
示例#56
0
    public void RunOnly(string testName)
    {
        var nameFilter = new SimpleNameFilter(testName);

        filter = And(filter, nameFilter);
    }
示例#57
0
        private int BuildFilteredBlockingProcess(string category, ITestFilter filter)
        {
            var args = BuildParameterString(BuildOutputXmlPath(category), ToParameterString(filter));

            return(BuildBlockingProcess(args));
        }
示例#58
0
    public void Exclude(string categories)
    {
        var excludeFilter = new NotFilter(new SimpleCategoryExpression(categories).Filter);

        filter = And(filter, excludeFilter);
    }
示例#59
0
 /// <summary>
 /// Adds a filter to the list of filters
 /// </summary>
 /// <param name="filter">The filter to be added</param>
 public void Add(ITestFilter filter)
 {
     this.filters.Add(filter);
 }
        public void Run(ITestFilter testFilter = null)
        {
            testFilter = testFilter ?? TestFilter.Empty;

            // "controls" is the cross-platform test assembly
#if NETSTANDARD2_0
            var controls = Assembly.GetExecutingAssembly();
#else
            var controls = typeof(PlatformTestRunner).GetTypeInfo().Assembly;
#endif

            var platformTestSettings = DependencyService.Resolve <IPlatformTestSettings>();

            // "platform" is the native assembly (ControGallery.iOS, ControlGallery.Android, etc.)
            Assembly platform        = platformTestSettings.Assembly;
            var      testRunSettings = platformTestSettings.TestRunSettings;

            var runner = new NUnitTestAssemblyRunner(new DefaultTestAssemblyBuilder());

            bool runOnMainThread = false;
            if (testRunSettings.TryGetValue(FrameworkPackageSettings.RunOnMainThread, out object runOnMainSetting))
            {
                runOnMainThread = (bool)runOnMainSetting;
            }

            try
            {
                if (runOnMainThread)
                {
                    // FrameworkPackageSettings.RunOnMainThread will force all the tests to run sequentially on the thread
                    // they are started on; we have to do this for iOS to avoid cross-thread exceptions when updating
                    // renderer properties. It's a less nice runner experience, because we don't get progress updates
                    // while it runs, but that's life. Anyway, we push the test runs onto the main thread and wait.

                    Device.BeginInvokeOnMainThread(() =>
                    {
                        runner.Load(controls, testRunSettings);
                        runner.Run(_testListener, testFilter);

                        runner.Load(platform, testRunSettings);
                        runner.Run(_testListener, testFilter);
                    });
                }
                else
                {
                    // So far, Android lets us get away with running tests asynchronously, so we get
                    // progress updates as they run. This should be our default until we run into cross-thread
                    // or "not on the UI thread" issues with a platform, at which point we need to set RunOnMainThread
                    // like we do for iOS

                    runner.Load(controls, testRunSettings);
                    runner.Run(_testListener, testFilter);

                    runner.Load(platform, testRunSettings);
                    runner.Run(_testListener, testFilter);
                }
            }
            catch (Exception ex)
            {
                MessagingCenter.Send(ex, "TestRunnerError");
            }
        }