コード例 #1
0
        public TestRunState Run(ITestListener testListener, string assemblyFile, string cref)
        {
            if (testListener == null)
            {
                throw new ArgumentNullException("testListener");
            }
            if (assemblyFile == null)
            {
                throw new ArgumentNullException("assemblyFile");
            }

            FacadeOptions      options = FacadeOptions.ReadFromRegistry();
            FacadeTestRunState result  = TestRunner.Run(new AdapterFacadeTestListener(testListener), assemblyFile, cref, options);

            return(FacadeUtils.ToTestRunState(result));
        }
コード例 #2
0
        public TestRunState RunAssembly(ITestListener testListener, Assembly assembly)
        {
            if (testListener == null)
            {
                throw new ArgumentNullException("testListener");
            }
            if (assembly == null)
            {
                throw new ArgumentNullException("assembly");
            }

            FacadeOptions      options = FacadeOptions.ReadFromRegistry();
            FacadeTestRunState result  = TestRunner.Run(new AdapterFacadeTestListener(testListener),
                                                        GetAssemblyPath(assembly), null, options);

            return(FacadeUtils.ToTestRunState(result));
        }
コード例 #3
0
ファイル: TDNetAddInTests.cs プロジェクト: citizenmatt/gallio
        public void RunAssemblyPassesCorrectOptionsToTheLauncher()
        {
            StubbedLocalTestRunner tr = new StubbedLocalTestRunner();

            Assembly assembly     = typeof(TDNetAddInTests).Assembly;
            string   assemblyPath = AssemblyUtils.GetAssemblyLocalPath(assembly);

            tr.SetRunLauncherAction(delegate(TestLauncher launcher)
            {
                AssertTestLauncherOptions(launcher, assemblyPath, "*");

                return(new TestLauncherResult(new Report()));
            });

            FacadeOptions facadeOptions = new FacadeOptions();

            tr.Run(MockRepository.GenerateStub <IFacadeTestListener>(), assemblyPath, null, facadeOptions);
        }
コード例 #4
0
ファイル: TDNetAddInTests.cs プロジェクト: citizenmatt/gallio
        public void RunReturnsCorrectResultCode(int resultCode, FacadeTestRunState expectedRunState)
        {
            StubbedLocalTestRunner tr = new StubbedLocalTestRunner();

            Assembly assembly     = typeof(TDNetAddInTests).Assembly;
            string   assemblyPath = AssemblyUtils.GetAssemblyLocalPath(assembly);

            tr.SetRunLauncherAction(delegate
            {
                TestLauncherResult result = new TestLauncherResult(new Report());
                result.SetResultCode(resultCode);
                return(result);
            });

            FacadeOptions      facadeOptions = new FacadeOptions();
            FacadeTestRunState runResult     = tr.Run(MockRepository.GenerateStub <IFacadeTestListener>(), assemblyPath, null, facadeOptions);

            Assert.AreEqual(expectedRunState, runResult);
        }
コード例 #5
0
ファイル: TDNetAddInTests.cs プロジェクト: citizenmatt/gallio
        public void RunNamespacePassesCorrectOptionsToTheLauncher()
        {
            StubbedLocalTestRunner tr = new StubbedLocalTestRunner();

            Assembly assembly     = typeof(TDNetAddInTests).Assembly;
            string   assemblyPath = AssemblyUtils.GetAssemblyLocalPath(assembly);
            string   @namespace   = "Foo";

            tr.SetRunLauncherAction(delegate(TestLauncher launcher)
            {
                AssertTestLauncherOptions(launcher, AssemblyUtils.GetAssemblyLocalPath(assembly),
                                          string.Format("Namespace: {0}", @namespace));

                return(new TestLauncherResult(new Report()));
            });

            FacadeOptions facadeOptions = new FacadeOptions();

            tr.Run(MockRepository.GenerateStub <IFacadeTestListener>(), assemblyPath, "N:" + @namespace, facadeOptions);
        }
コード例 #6
0
ファイル: TDNetAddInTests.cs プロジェクト: citizenmatt/gallio
        public void RunMemberWithTypePassesCorrectOptionsToTheLauncher()
        {
            StubbedLocalTestRunner tr = new StubbedLocalTestRunner();

            Type     type         = typeof(TDNetAddInTests);
            Assembly assembly     = type.Assembly;
            string   assemblyPath = AssemblyUtils.GetAssemblyLocalPath(assembly);

            tr.SetRunLauncherAction(delegate(TestLauncher launcher)
            {
                AssertTestLauncherOptions(launcher, assemblyPath,
                                          string.Format("Type: {0}", type.FullName));

                return(new TestLauncherResult(new Report()));
            });

            FacadeOptions facadeOptions = new FacadeOptions();

            tr.Run(MockRepository.GenerateStub <IFacadeTestListener>(), assemblyPath, "T:" + type.FullName, facadeOptions);
        }
コード例 #7
0
ファイル: TDNetAddInTests.cs プロジェクト: citizenmatt/gallio
        public void RunMemberWithMethodPassesCorrectOptionsToTheLauncher()
        {
            StubbedLocalTestRunner tr = new StubbedLocalTestRunner();

            MethodBase method       = Reflector.GetExecutingFunction().Resolve(true);
            Assembly   assembly     = method.DeclaringType.Assembly;
            string     assemblyPath = AssemblyUtils.GetAssemblyLocalPath(assembly);

            tr.SetRunLauncherAction(delegate(TestLauncher launcher)
            {
                AssertTestLauncherOptions(launcher, AssemblyUtils.GetAssemblyLocalPath(assembly),
                                          string.Format("(Type: {0} and Member: {1})", method.DeclaringType.FullName, method.Name));

                return(new TestLauncherResult(new Report()));
            });

            FacadeOptions facadeOptions = new FacadeOptions();

            tr.Run(MockRepository.GenerateStub <IFacadeTestListener>(), assemblyPath,
                   "M:" + method.DeclaringType.FullName + "." + method.Name, facadeOptions);
        }
コード例 #8
0
ファイル: TDNetAddInTests.cs プロジェクト: citizenmatt/gallio
        public void RunWithExclusionCategoryFilterPassesCorrectOptionsToTheLauncher()
        {
            StubbedLocalTestRunner tr = new StubbedLocalTestRunner();

            Assembly assembly     = typeof(TDNetAddInTests).Assembly;
            string   assemblyPath = AssemblyUtils.GetAssemblyLocalPath(assembly);
            string   @namespace   = "Foo";

            tr.SetRunLauncherAction(delegate(TestLauncher launcher)
            {
                AssertTestLauncherOptions(launcher, AssemblyUtils.GetAssemblyLocalPath(assembly),
                                          string.Format("exclude Category: {0}, {1} include Namespace: {2}", "abc", "def", @namespace));

                return(new TestLauncherResult(new Report()));
            });

            FacadeOptions facadeOptions = new FacadeOptions()
            {
                FilterCategoryMode  = FacadeFilterCategoryMode.Exclude,
                FilterCategoryNames = new string[] { "abc", "def" }
            };

            tr.Run(MockRepository.GenerateStub <IFacadeTestListener>(), assemblyPath, "N:" + @namespace, facadeOptions);
        }
コード例 #9
0
        protected override FacadeTestRunState RunImpl(IFacadeTestListener testListener, string assemblyPath, string cref, FacadeOptions facadeOptions)
        {
            if (cref == null)
            {
                return(RunAssembly(testListener, assemblyPath, facadeOptions));
            }

            if (cref.Length >= 2)
            {
                char descriptor = cref[0];

                switch (descriptor)
                {
                case 'T':
                    return(RunType(testListener, assemblyPath, cref.Substring(2), facadeOptions));

                case 'N':
                    return(RunNamespace(testListener, assemblyPath, cref.Substring(2), facadeOptions));

                case 'M':
                case 'F':
                case 'P':
                case 'E':
                    int paramsPos = cref.IndexOf('(');
                    if (paramsPos < 0)
                    {
                        paramsPos = cref.Length;
                    }

                    string memberNameWithType = cref.Substring(2, paramsPos - 2);
                    int    memberPos          = memberNameWithType.LastIndexOf('.');
                    if (memberPos < 0)
                    {
                        break;
                    }

                    string typeName   = memberNameWithType.Substring(0, memberPos);
                    string memberName = memberNameWithType.Substring(memberPos + 1);
                    return(RunMember(testListener, assemblyPath, typeName, memberName, facadeOptions));
                }
            }

            return(FacadeTestRunState.NoTests);
        }
コード例 #10
0
        private FacadeTestRunState Run(IFacadeTestListener testListener, string assemblyPath, Filter <ITestDescriptor> filter, FacadeOptions facadeOptions)
        {
            if (testListener == null)
            {
                throw new ArgumentNullException(@"testListener");
            }
            if (assemblyPath == null)
            {
                throw new ArgumentNullException("assemblyPath");
            }
            if (facadeOptions == null)
            {
                throw new ArgumentNullException("facadeOptions");
            }

            ILogger logger = new FilteredLogger(new TDNetLogger(testListener), LogSeverity.Info);

            try
            {
                RuntimeAccessor.Instance.AddLogListener(logger);
                var filterRules = new List <FilterRule <ITestDescriptor> >();

                switch (facadeOptions.FilterCategoryMode)
                {
                case FacadeFilterCategoryMode.Disabled:
                    filterRules.Add(new FilterRule <ITestDescriptor>(FilterRuleType.Inclusion, filter));
                    break;

                case FacadeFilterCategoryMode.Include:
                    filterRules.Add(new FilterRule <ITestDescriptor>(FilterRuleType.Inclusion,
                                                                     new AndFilter <ITestDescriptor>(new[] { filter, ToCategoryFilter(facadeOptions.FilterCategoryNames) })));
                    break;

                case FacadeFilterCategoryMode.Exclude:
                    filterRules.Add(new FilterRule <ITestDescriptor>(FilterRuleType.Exclusion, ToCategoryFilter(facadeOptions.FilterCategoryNames)));
                    filterRules.Add(new FilterRule <ITestDescriptor>(FilterRuleType.Inclusion, filter));
                    break;
                }

                var filterSet = new FilterSet <ITestDescriptor>(filterRules);
                launcher.Logger = logger;
                launcher.ProgressMonitorProvider           = new LogProgressMonitorProvider(logger);
                launcher.TestExecutionOptions.FilterSet    = filterSet;
                launcher.TestProject.TestRunnerFactoryName = StandardTestRunnerFactoryNames.IsolatedAppDomain;
                launcher.TestProject.AddTestRunnerExtension(new TDNetExtension(testListener)); // This monitor will inform the user in real-time what's going on
                launcher.TestProject.TestPackage.AddFile(new FileInfo(assemblyPath));
                string assemblyDirectory = Path.GetDirectoryName(assemblyPath);
                launcher.TestProject.TestPackage.ApplicationBaseDirectory = new DirectoryInfo(assemblyDirectory);
                launcher.TestProject.TestPackage.WorkingDirectory         = new DirectoryInfo(assemblyDirectory);
                TestLauncherResult result          = RunLauncher(launcher);
                string             reportDirectory = GetReportDirectory(logger);

                if (reportDirectory != null)
                {
                    var reportFormatterOptions = new ReportFormatterOptions();
                    var preferenceManager      = (TDNetPreferenceManager)RuntimeAccessor.ServiceLocator.ResolveByComponentId("TDNetRunner.PreferenceManager");
                    var reportFormat           = preferenceManager.ReportSettings.DetermineReportFormat(result.Report);
                    result.GenerateReports(reportDirectory, Path.GetFileName(assemblyPath), ReportArchive.Normal,
                                           new[] { reportFormat }, reportFormatterOptions,
                                           RuntimeAccessor.ServiceLocator.Resolve <IReportManager>(), NullProgressMonitor.CreateInstance());

                    // This will generate a link to the generated report
                    if (result.ReportDocumentPaths.Count != 0)
                    {
                        Uri    rawUrl     = new Uri(result.ReportDocumentPaths[0]);
                        string displayUrl = "file:///" + rawUrl.LocalPath.Replace(" ", "%20").Replace(@"\", "/");

                        // TDNet just prints the link on its own but it's not always clear to users what it represents.
                        // testListener.TestResultsUrl(displayUrl);
                        testListener.WriteLine("\nTest Report: " + displayUrl, FacadeCategory.Info);
                    }
                }

                // Inform no tests run, if necessary.
                if (result.ResultCode == ResultCode.NoTests)
                {
                    InformNoTestsWereRun(testListener, Resources.MbUnitTestRunner_NoTestsFound);
                }
                else if (result.Statistics.TestCount == 0)
                {
                    InformNoTestsWereRun(testListener, null);
                }

                return(GetTestRunState(result));
            }
            finally
            {
                RuntimeAccessor.Instance.RemoveLogListener(logger);
            }
        }
コード例 #11
0
 private FacadeTestRunState RunMember(IFacadeTestListener testListener, string assemblyPath, string typeName, string memberName, FacadeOptions facadeOptions)
 {
     return(Run(testListener, assemblyPath, new AndFilter <ITestDescriptor>(new Filter <ITestDescriptor>[]
     {
         new TypeFilter <ITestDescriptor>(new EqualityFilter <string>(typeName), true),
         new MemberFilter <ITestDescriptor>(new EqualityFilter <string>(memberName))
     }), facadeOptions));
 }
コード例 #12
0
 private FacadeTestRunState RunNamespace(IFacadeTestListener testListener, string assemblyPath, string @namespace, FacadeOptions facadeOptions)
 {
     return(Run(testListener, assemblyPath, new AndFilter <ITestDescriptor>(new Filter <ITestDescriptor>[]
     {
         new NamespaceFilter <ITestDescriptor>(new EqualityFilter <string>(@namespace))
     }), facadeOptions));
 }
コード例 #13
0
 private FacadeTestRunState RunAssembly(IFacadeTestListener testListener, string assemblyPath, FacadeOptions facadeOptions)
 {
     return(Run(testListener, assemblyPath, new AnyFilter <ITestDescriptor>(), facadeOptions));
 }
コード例 #14
0
        /// <inheritdoc />
        protected override FacadeTestRunState RunImpl(IFacadeTestListener testListener, string assemblyPath, string cref, FacadeOptions facadeOptions)
        {
            string versionLabel = VersionPolicy.GetVersionLabel(Assembly.GetExecutingAssembly());

            testListener.WriteLine(String.Format(Resources.RunnerNameAndVersion + "\n", versionLabel), FacadeCategory.Info);

            switch (facadeOptions.FilterCategoryMode)
            {
            case FacadeFilterCategoryMode.Include:
                testListener.WriteLine(String.Format("Included categories: {0}\n", CombineCategoryNameList(facadeOptions.FilterCategoryNames)), FacadeCategory.Info);
                break;

            case FacadeFilterCategoryMode.Exclude:
                testListener.WriteLine(String.Format("Excluded categories: {0}\n", CombineCategoryNameList(facadeOptions.FilterCategoryNames)), FacadeCategory.Info);
                break;
            }

            EnsureTestRunnerIsCreated();
            return(testRunner.Run(testListener, assemblyPath, cref, facadeOptions));
        }
コード例 #15
0
 protected abstract FacadeTestRunState RunImpl(IFacadeTestListener testListener, string assemblyPath, string cref, FacadeOptions facadeOptions);
コード例 #16
0
 public FacadeTestRunState Run(IFacadeTestListener testListener, string assemblyPath, string cref, FacadeOptions facadeOptions)
 {
     try
     {
         return(RunImpl(testListener, assemblyPath, cref, facadeOptions));
     }
     catch (Exception ex)
     {
         throw ServerExceptionUtils.Wrap(ex);
     }
 }