Exemplo n.º 1
0
        public TestRunState RunMember(ITestListener testListener, Assembly assembly, MemberInfo member)
        {
            Type type = member as Type;

            if (type != null)
            {
                TypeFixtureFilter filter     = new TypeFixtureFilter(type.FullName);
                TypeFilterBase    typeFilter = TypeFilters.Type(type.FullName);
                return(Run(testListener, assembly, filter, new AnyRunPipeFilter(), typeFilter));
            }
            else
            {
                TypeFixtureFilter           filter        = new TypeFixtureFilter(member.DeclaringType.FullName);
                TypeFilterBase              typeFilter    = TypeFilters.Type(member.DeclaringType.FullName);
                ContainsMemberRunPipeFilter runPipeFilter = new ContainsMemberRunPipeFilter(member);

                return(Run(testListener, assembly, filter, runPipeFilter, typeFilter));
            }
        }
Exemplo n.º 2
0
        protected TestRunState Run(
            ITestListener testListener,
            Assembly assembly,
            IFixtureFilter filter,
            RunPipeFilterBase runPipeFilter,
            TypeFilterBase typeFilter
            )
        {
            this.testListener = testListener;

            if (!CheckMbUnitVersion(assembly))
            {
                return(TestRunState.Error);
            }

            assemblySetUpCount       = 0;
            assemblyTearDownCount    = 0;
            testFixtureSetUpCount    = 0;
            testFixtureTearDownCount = 0;
            failureCount             = 0;
            successCount             = 0;
            ignoreCount = 0;
            skipCount   = 0;

            string assemblyPath = new Uri(assembly.CodeBase).LocalPath;

            testListener.WriteLine("Starting the MbUnit Test Execution", Category.Info);
            testListener.WriteLine("Exploring " + assembly.FullName, Category.Info);
            testListener.WriteLine(String.Format("MbUnit {0} Addin", typeof(RunPipe).Assembly.GetName().Version), Category.Info);

            try
            {
                using (AssemblyTestDomain domain = new AssemblyTestDomain(assembly))
                {
                    //define an assembly resolver routine in case the CLR cannot find our assemblies.
                    AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(AssemblyResolveHandler);

                    domain.TypeFilter    = typeFilter;
                    domain.Filter        = filter;
                    domain.RunPipeFilter = runPipeFilter;
                    domain.Load();
                    // check found tests
                    testCount = domain.TestEngine.GetTestCount().RunCount;
                    if (testCount == 0)
                    {
                        testListener.WriteLine("No tests found", Category.Info);
                        return(TestRunState.NoTests);
                    }

                    testListener.WriteLine(String.Format("Found {0} tests", testCount), Category.Info);
                    // add listeners
                    domain.TestEngine.FixtureRunner.AssemblySetUp       += new ReportSetUpAndTearDownEventHandler(TestEngine_AssemblySetUp);
                    domain.TestEngine.FixtureRunner.AssemblyTearDown    += new ReportSetUpAndTearDownEventHandler(TestEngine_AssemblyTearDown);
                    domain.TestEngine.FixtureRunner.TestFixtureSetUp    += new ReportSetUpAndTearDownEventHandler(TestEngine_TestFixtureSetUp);
                    domain.TestEngine.FixtureRunner.TestFixtureTearDown += new ReportSetUpAndTearDownEventHandler(TestEngine_TestFixtureTearDown);
                    domain.TestEngine.FixtureRunner.RunResult           += new ReportRunEventHandler(TestEngine_RunResult);

                    try
                    {
                        domain.TestEngine.RunPipes();
                    }
                    finally
                    {
                        if (domain.TestEngine != null)
                        {
                            domain.TestEngine.FixtureRunner.AssemblySetUp       -= new ReportSetUpAndTearDownEventHandler(TestEngine_AssemblySetUp);
                            domain.TestEngine.FixtureRunner.AssemblyTearDown    -= new ReportSetUpAndTearDownEventHandler(TestEngine_AssemblyTearDown);
                            domain.TestEngine.FixtureRunner.TestFixtureSetUp    -= new ReportSetUpAndTearDownEventHandler(TestEngine_TestFixtureSetUp);
                            domain.TestEngine.FixtureRunner.TestFixtureTearDown -= new ReportSetUpAndTearDownEventHandler(TestEngine_TestFixtureTearDown);
                            domain.TestEngine.FixtureRunner.RunResult           -= new ReportRunEventHandler(TestEngine_RunResult);
                        }
                    }

                    testListener.WriteLine("[reports] generating HTML report", Category.Info);
                    this.GenerateReports(testListener, assembly, domain.TestEngine.Report.Result);

                    return(toTestRunState(domain.TestEngine.Report.Result));
                }
            }
            catch (Exception ex)
            {
                testListener.WriteLine("[critical-failure]", Category.Error);
                testListener.WriteLine(ex.ToString(), Category.Error);
                throw new Exception("Test execution failed", ex);
            }
        }