NUnitLite.Runner.TextUI.Execute C# (CSharp) Method

Execute() public method

Execute a test run based on the aruments passed from Main.
public Execute ( string args ) : void
args string An array of arguments
return void
        public void Execute(string[] args)
        {
            // NOTE: Execute must be directly called from the
            // test assembly in order for the mechanism to work.
            Assembly callingAssembly = Assembly.GetCallingAssembly();

            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)
                        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)
                {
                    writer.WriteLine(ex.Message);
                }
                catch (Exception ex)
                {
                    writer.WriteLine(ex.ToString());
                }
                finally
                {
                    if (commandLineOptions.OutFile == null)
                    {
                        if (commandLineOptions.Wait)
                        {
                            Console.WriteLine("Press Enter key to continue . . .");
                            Console.ReadLine();
                        }
                    }
                    else
                    {
                        writer.Close();
                    }
                }
            }
        }

Usage Example

Example #1
0
 // The main program executes the tests. Output may be routed to
 // various locations, depending on the arguments passed.
 //
 // Arguments:
 //
 //  Arguments may be names of assemblies or options prefixed with '/'
 //  or '-'. Normally, no assemblies are passed and the calling
 //  assembly (the one containing this Main) is used. The following
 //  options are accepted:
 //
 //    -test:<testname>  Provides the name of a test to be exected.
 //                      May be repeated. If this option is not used,
 //                      all tests are run.
 //
 //    -out:PATH         Path to a file to which output is written.
 //                      If omitted, Console is used, which means the
 //                      output is lost on a platform with no Console.
 //
 //    -full             Print full report of all tests.
 //
 //    -result:PATH      Path to a file to which the XML test result is written.
 //
 //    -explore[:Path]   If specified, list tests rather than executing them. If a
 //                      path is given, an XML file representing the tests is written
 //                      to that location. If not, output is written to tests.xml.
 //
 //    -noheader,noh     Suppress display of the initial message.
 //
 //    -wait             Wait for a keypress before exiting.
 //
 //    -include:categorylist 
 //             If specified, nunitlite will only run the tests with a category 
 //             that is in the comma separated list of category names. 
 //             Example usage: -include:category1,category2 this command can be used
 //             in combination with the -exclude option also note that exlude takes priority
 //             over all includes.
 //
 //    -exclude:categorylist 
 //             If specified, nunitlite will not run any of the tests with a category 
 //             that is in the comma separated list of category names. 
 //             Example usage: -exclude:category1,category2 this command can be used
 //             in combination with the -include option also note that exclude takes priority
 //             over all includes
 public static int Main(string[] args)
 {
     var runner = new TextUI();
     runner.Execute(args);
     
     return (runner.Failure ? 1 : 0);
 }
All Usage Examples Of NUnitLite.Runner.TextUI::Execute