/// <summary> /// Build a suite based on a TestPackage /// </summary> /// <param name="package">The TestPackage</param> /// <returns>A TestSuite</returns> public TestSuite Build( TestPackage package ) { bool autoNamespaceSuites = package.GetSetting( "AutoNamespaceSuites", true ); bool mergeAssemblies = package.GetSetting( "MergeAssemblies", false ); TestExecutionContext.CurrentContext.TestCaseTimeout = package.GetSetting("DefaultTimeout", 0); if ( package.IsSingleAssembly ) return BuildSingleAssembly( package ); string targetAssemblyName = null; if( package.TestName != null && package.Assemblies.Contains( package.TestName ) ) { targetAssemblyName = package.TestName; package.TestName = null; } TestSuite rootSuite = new ProjectRootSuite( package.FullName ); NamespaceTreeBuilder namespaceTree = new NamespaceTreeBuilder( rootSuite ); builders.Clear(); foreach(string assemblyName in package.Assemblies) { if ( targetAssemblyName == null || targetAssemblyName == assemblyName ) { TestAssemblyBuilder builder = new TestAssemblyBuilder(); builders.Add( builder ); Test testAssembly = builder.Build( assemblyName, package.TestName, autoNamespaceSuites && !mergeAssemblies ); if ( testAssembly != null ) { if (!mergeAssemblies) { rootSuite.Add(testAssembly); } else if (autoNamespaceSuites) { namespaceTree.Add(testAssembly.Tests); rootSuite = namespaceTree.RootSuite; } else { foreach (Test test in testAssembly.Tests) rootSuite.Add(test); } } } } ProviderCache.Clear(); if (rootSuite.Tests.Count == 0) return null; return rootSuite; }
public void CanLoadAssemblyAtRelativeDirectoryLocation() { DirectoryInfo current = new DirectoryInfo( Environment.CurrentDirectory ); string dir = current.Name; string parentDir = current.Parent.FullName; try { Environment.CurrentDirectory = parentDir; TestAssemblyBuilder builder = new TestAssemblyBuilder(); Assert.IsNotNull( builder.Build( dir + Path.DirectorySeparatorChar + "mock-assembly.dll", false ) ); } finally { Environment.CurrentDirectory = current.FullName; } }
/// <summary> /// Build a suite based on a TestPackage /// </summary> /// <param name="package">The TestPackage</param> /// <returns>A TestSuite</returns> public TestSuite Build( TestPackage package ) { bool autoNamespaceSuites = package.GetSetting( "AutoNamespaceSuites", true ); bool mergeAssemblies = package.GetSetting( "MergeAssemblies", false ); if ( package.IsSingleAssembly ) return BuildSingleAssembly( package ); TestSuite rootSuite = new TestSuite( package.FullName ); NamespaceTreeBuilder namespaceTree = new NamespaceTreeBuilder( rootSuite ); builders.Clear(); foreach(string assemblyName in package.Assemblies) { TestAssemblyBuilder builder = new TestAssemblyBuilder(); builders.Add( builder ); Test testAssembly = builder.Build( assemblyName, package.TestName, autoNamespaceSuites && !mergeAssemblies ); if ( testAssembly != null ) { if (!mergeAssemblies) { rootSuite.Add(testAssembly); } else if (autoNamespaceSuites) { namespaceTree.Add(testAssembly.Tests); rootSuite = namespaceTree.RootSuite; } else { foreach (Test test in testAssembly.Tests) rootSuite.Add(test); } } } if ( rootSuite.Tests.Count == 0 ) return null; return rootSuite; }
private TestSuite BuildSingleAssembly( TestPackage package ) { TestAssemblyBuilder builder = new TestAssemblyBuilder(); builders.Clear(); builders.Add( builder ); return (TestSuite)builder.Build( package.FullName, package.TestName, package.GetSetting( "AutoNamespaceSuites", true ) ); }
public void CanLoadAssemblyInCurrentDirectory() { TestAssemblyBuilder builder = new TestAssemblyBuilder(); Assert.IsNotNull( builder.Build( "mock-assembly.dll", false ) ); }
public void ExcludingCategoryDoesNotRunExplicitTestFixtures() { TestFilter filter = new NotFilter( new CategoryFilter( "MockCategory" ) ); TestAssemblyBuilder builder = new TestAssemblyBuilder(); TestSuite suite = builder.Build( "mock-assembly.dll", true ); TestResult result = suite.Run( NullListener.NULL, filter ); ResultSummarizer summarizer = new ResultSummarizer( result ); Assert.AreEqual( MockAssembly.Tests - MockAssembly.NotRun - 2, summarizer.ResultCount ); }
public void ExcludingCategoryDoesNotRunExplicitTestFixtures() { TestFilter filter = new NotFilter( new CategoryFilter( "MockCategory" ) ); TestAssemblyBuilder builder = new TestAssemblyBuilder(); TestSuite suite = builder.Build( "mock-assembly.dll", true ); TestResult result = suite.Run( NullListener.NULL, filter ); ResultSummarizer summarizer = new ResultSummarizer( result ); Assert.AreEqual( MockAssembly.Tests - MockAssembly.NotRun - 2, summarizer.ResultCount ); Console.WriteLine( "{0} ignored, {1} explicit, {2} not run", MockAssembly.Ignored, MockAssembly.Explicit, MockAssembly.NotRun ); Console.WriteLine( "{0} tests were run out of {1}", MockAssembly.Tests - MockAssembly.NotRun - 2, MockAssembly.Tests ); }
public void ExcludingCategoryDoesNotRunExplicitTestFixtures() { NotFilter filter = new NotFilter( new CategoryFilter( "MockCategory" ) ); filter.TopLevel = true; TestAssemblyBuilder builder = new TestAssemblyBuilder(); TestSuite suite = builder.Build( MockAssembly.AssemblyPath, true ); TestResult result = suite.Run( NullListener.NULL, filter ); ResultSummarizer summarizer = new ResultSummarizer( result ); Assert.AreEqual( MockAssembly.TestsRun - 2, summarizer.TestsRun ); }