[Adapdev-commits] Adapdev/src/Adapdev.UnitTest.TestRunner Adapdev.UnitTest.TestRunner.csproj,NONE,1.
Status: Beta
Brought to you by:
intesar66
From: Sean M. <int...@us...> - 2005-10-22 17:15:48
|
Update of /cvsroot/adapdev/Adapdev/src/Adapdev.UnitTest.TestRunner In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29845/src/Adapdev.UnitTest.TestRunner Added Files: Adapdev.UnitTest.TestRunner.csproj AdapdevTestRunner.cs Log Message: Added TestDriven.NET functionality --- NEW FILE: AdapdevTestRunner.cs --- using System; using System.Text; using TestDriven.Framework; using System.Reflection; using Adapdev.UnitTest.Core; using System.Diagnostics; namespace Adapdev.UnitTest.TestRunner { public class AdapdevTestRunner : ITestRunner { public TestRunResult RunAssembly(ITestListener testListener, Assembly assembly) { ITestSuiteFilter filter = new NoFilter(); return run(testListener, assembly, filter); } public TestRunResult RunMember(ITestListener testListener, Assembly assembly, MemberInfo member) { if (member is Type) { ITestSuiteFilter filter = new TypeFilter(member as Type); return run(testListener, assembly, filter); } else if (member is MethodInfo) { ITestSuiteFilter filter = new MethodFilter(member as MethodInfo); return run(testListener, assembly, filter); } else { return TestRunResult.NoTests; } } public TestRunResult RunNamespace(ITestListener testListener, Assembly assembly, string ns) { ITestSuiteFilter filter = new NamespaceFilter(ns); return run(testListener, assembly, filter); } TestRunResult run(ITestListener testListener, Assembly assembly, ITestSuiteFilter filter) { string assemblyFile = new Uri(assembly.CodeBase).LocalPath; ITestEngine engine = TestEngineFactory.CreateLocal(assemblyFile); TestSuite suite = engine.GetTestSuite(); filter.Filter(suite); if (suite.GetTestCount() == 0) { return TestRunResult.NoTests; } ProxyTestListener listener = new ProxyTestListener(testListener, suite.GetTestCount()); engine.SetTestEventDispatcher(listener.CreateDispatcher()); TestAssemblyResult[] results = engine.Run(suite); // HACK: Not always Success. return TestRunResult.Success; } class ProxyTestListener { ITestListener testListener; int testCount; public ProxyTestListener(ITestListener testListener, int testCount) { this.testListener = testListener; this.testCount = testCount; } public TestEventDispatcher CreateDispatcher() { TestEventDispatcher dispatcher = new TestEventDispatcher(); dispatcher.TestCompleted += new TestCompletedEventHandler(dispatcher_TestCompleted); dispatcher.TestIterationCompleted += new TestIterationCompletedEventHandler(dispatcher_TestIterationCompleted); dispatcher.TestSuiteCompleted += new TestSuiteCompletedEventHandler(dispatcher_TestSuiteCompleted); return dispatcher; } void dispatcher_TestCompleted(object sender, TestResultEventArgs e) { } private void dispatcher_TestIterationCompleted(object sender, TestIterationEventArgs e) { // HACK: Should this event fire if the test is ForcedIgnore? if (e.TestIteration.State != TestState.Ignore) { TestResultSummary summary = new TestResultSummary(); summary.TotalTests = this.testCount; summary.IsFailure = e.TestIteration.State == TestState.Fail; summary.IsSuccess = e.TestIteration.State == TestState.Pass; summary.IsExecuted = summary.IsFailure || summary.IsSuccess; // This is the correct code, but commented out // since the TextFormatter is currently in place // if(summary.IsFailure) // { // summary.StackTrace = e.TestIteration.FullStackTrace; // summary.Message = e.TestIteration.Result + // Environment.NewLine + // e.TestIteration.ConsoleOutput; // // ConsoleOutput is a hack since // // I don't see a property in TestResultSummary. // // Where should this go? // } summary.Name = e.TestIteration.Name; summary.TimeSpan = TimeSpan.FromSeconds(e.TestIteration.Duration); summary.TestRunner = GetType().FullName; this.testListener.TestFinished(summary); } } private void dispatcher_TestSuiteCompleted(object sender, TestAssemblyResult[] tar) { Console.WriteLine(new Adapdev.UnitTest.Core.TextFormatter(tar).GetText()); } } interface ITestSuiteFilter { void Filter(TestSuite suite); } class NoFilter : ITestSuiteFilter { public void Filter(TestSuite suite) { } } class NamespaceFilter : ITestSuiteFilter { string ns; public NamespaceFilter(string ns) { this.ns = ns; } public void Filter(TestSuite suite) { if (this.ns.Length > 0) { string prefix = this.ns + "."; foreach (TestAssembly testAssembly in suite.GetTestAssemblies()) { foreach (TestFixture testFixture in testAssembly.GetTestFixtures()) { if (!toFullName(testFixture).StartsWith(prefix)) { testFixture.ShouldRun = false; } } } } } } class TypeFilter : ITestSuiteFilter { Type type; public TypeFilter(Type type) { this.type = type; } public void Filter(TestSuite suite) { foreach (TestAssembly testAssembly in suite.GetTestAssemblies()) { foreach (TestFixture testFixture in testAssembly.GetTestFixtures()) { if (toFullName(testFixture) != this.type.FullName) { testFixture.ShouldRun = false; } } } } } class MethodFilter : ITestSuiteFilter { MethodInfo method; public MethodFilter(MethodInfo method) { this.method = method; } public void Filter(TestSuite suite) { Type type = this.method.ReflectedType; foreach (TestAssembly testAssembly in suite.GetTestAssemblies()) { foreach (TestFixture testFixture in testAssembly.GetTestFixtures()) { if (toFullName(testFixture) != type.FullName) { testFixture.ShouldRun = false; } else { foreach (Test test in testFixture.GetTests()) { if (test.Method != method.Name) { test.ShouldRun = false; } } } } } } } static string toFullName(TestFixture testFixture) { string fullName = ""; if (testFixture.Namespace != null && testFixture.Namespace.Length > 0) { fullName += testFixture.Namespace + "."; } fullName += testFixture.Class; return fullName; } } } --- NEW FILE: Adapdev.UnitTest.TestRunner.csproj --- <VisualStudioProject> <CSHARP ProjectType = "Local" ProductVersion = "7.10.3077" SchemaVersion = "2.0" ProjectGuid = "{2D0C35AA-CC64-4513-947D-F67C035D2B71}" > <Build> <Settings ApplicationIcon = "" AssemblyKeyContainerName = "" AssemblyName = "Adapdev.TestRunner" AssemblyOriginatorKeyFile = "" DefaultClientScript = "JScript" DefaultHTMLPageLayout = "Grid" DefaultTargetSchema = "IE50" DelaySign = "false" OutputType = "Library" PreBuildEvent = "" PostBuildEvent = "" RootNamespace = "Adapdev.TestRunner" RunPostBuildEvent = "OnBuildSuccess" StartupObject = "" > <Config Name = "Debug" AllowUnsafeBlocks = "false" BaseAddress = "285212672" CheckForOverflowUnderflow = "false" ConfigurationOverrideFile = "" DefineConstants = "DEBUG;TRACE" DocumentationFile = "" DebugSymbols = "true" FileAlignment = "4096" IncrementalBuild = "false" NoStdLib = "false" NoWarn = "" Optimize = "false" OutputPath = "bin\Debug\" RegisterForComInterop = "false" RemoveIntegerChecks = "false" TreatWarningsAsErrors = "false" WarningLevel = "4" /> <Config Name = "Release" AllowUnsafeBlocks = "false" BaseAddress = "285212672" CheckForOverflowUnderflow = "false" ConfigurationOverrideFile = "" DefineConstants = "TRACE" DocumentationFile = "" DebugSymbols = "false" FileAlignment = "4096" IncrementalBuild = "false" NoStdLib = "false" NoWarn = "" Optimize = "true" OutputPath = "bin\Release\" RegisterForComInterop = "false" RemoveIntegerChecks = "false" TreatWarningsAsErrors = "false" WarningLevel = "4" /> </Settings> <References> <Reference Name = "System" AssemblyName = "System" HintPath = "G:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.dll" /> <Reference Name = "System.Data" AssemblyName = "System.Data" HintPath = "G:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.Data.dll" /> <Reference Name = "System.XML" AssemblyName = "System.Xml" HintPath = "G:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\System.XML.dll" /> <Reference Name = "Adapdev.UnitTest.Core" Project = "{B8592DE8-C10B-4ACB-A422-919C02C04B05}" Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" /> <Reference Name = "Adapdev" Project = "{CC30A321-2569-4B1F-8E1A-781B5509B56D}" Package = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" /> <Reference Name = "log4net" AssemblyName = "log4net" HintPath = "..\..\lib\log4net.dll" /> <Reference Name = "TestDriven.Framework" AssemblyName = "TestDriven.Framework" HintPath = "..\..\lib\TestDriven.Framework.dll" /> </References> </Build> <Files> <Include> <File RelPath = "AdapdevAssemblyInfo.cs" Link = "..\AdapdevAssemblyInfo.cs" SubType = "Code" BuildAction = "Compile" /> <File RelPath = "AdapdevTestRunner.cs" SubType = "Code" BuildAction = "Compile" /> </Include> </Files> </CSHARP> </VisualStudioProject> |