public void Should_produce_xml() { var plugins = new List <Plugin>(); var options = new RunOptions(); plugins.Add(new Plugin(@"C:\Some\Path\Assembly.dll", "This.Is.Full.Type.Name.For.Class.Implementing.IAutoTestNetTestRunner")); plugins.Add(new Plugin(@"C:\Some\Path\Assembly.dll", "Some.Class.Name")); var runner1 = new RunnerOptions("nunit"); runner1.AddCategories(new string[] { "SomeTestCategory", "SomeOtherTestCategory" }); var assembly1 = new AssemblyOptions(@"C:\my\testassembly.dll"); assembly1.AddTests(new string[] { "testassembly.class.test1", "testassembly.class.test2" }); assembly1.AddMembers(new string[] { "testassembly.class2", "testassembly.class3" }); assembly1.AddNamespaces(new string[] { "testassembly.somenamespace1", "testassembly.somenamespace2" }); runner1.AddAssemblies(new AssemblyOptions[] { assembly1, new AssemblyOptions(@"C:\my\anothernunitassembly.dll") }); options.AddTestRun(runner1); var runner2 = new RunnerOptions("another"); runner2.AddAssembly(new AssemblyOptions(@"C:\my\other\testassembly.dll")); options.AddTestRun(runner2); var writer = new OptionsXmlWriter(plugins, options); var file = Path.GetTempFileName(); writer.Write(file); var path = Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath); var original = File.ReadAllText(file).Replace("\r\n", "\n"); var generated = File.ReadAllText(Path.Combine(path, "TestOptions.xml")).Replace("\r\n", "\n"); Assert.That(original, Is.EqualTo(generated)); }
private RunnerOptions getRunnerOptions(IEnumerable <TestRunInfo> unitInfos, IAutoTestNetTestRunner instance) { DebugLog.Debug.WriteDetail("Getting runner options for {0}", instance.Identifier); var runner = new RunnerOptions(instance.Identifier); var testRunner = TestRunnerConverter.FromString(instance.Identifier); foreach (var info in unitInfos) { DebugLog.Debug.WriteDetail("Handling {0}", info.Assembly); DebugLog.Debug.WriteDetail("About to add assembly"); var assembly = new AssemblyOptions(info.Assembly); assembly.AddTests(info.GetTestsFor(testRunner)); assembly.AddTests(info.GetTestsFor(TestRunner.Any)); DebugLog.Debug.WriteDetail("Found {0} tests for assembly", assembly.Tests.Count()); assembly.AddMembers(info.GetMembersFor(testRunner)); assembly.AddMembers(info.GetMembersFor(TestRunner.Any)); DebugLog.Debug.WriteDetail("Found {0} members for assembly", assembly.Members.Count()); assembly.AddNamespaces(info.GetNamespacesFor(testRunner)); assembly.AddNamespaces(info.GetNamespacesFor(TestRunner.Any)); DebugLog.Debug.WriteDetail("Found {0} namespaces for assembly", assembly.Namespaces.Count()); DebugLog.Debug.WriteDetail("Run only specified tests for runner {0} is {1}", testRunner, info.OnlyRunSpcifiedTestsFor(testRunner)); if (info.OnlyRunSpcifiedTestsFor(testRunner) && assembly.Tests.Count() == 0 && assembly.Members.Count() == 0 && assembly.Namespaces.Count() == 0) { continue; } DebugLog.Debug.WriteDetail("Adding assembly"); runner.AddAssembly(assembly); } return(runner); }
private static RunnerOptions getTestRunsFor(IAutoTestNetTestRunner instance, RunnerOptions run) { if (run.ID.ToLower() != "any") { return(run); } var newRun = new RunnerOptions(run.ID); newRun.AddCategories(run.Categories.ToArray()); foreach (var asm in run.Assemblies) { if (!asm.IsVerified && !instance.ContainsTestsFor(asm.Assembly)) { continue; } var assembly = new AssemblyOptions(asm.Assembly); assembly.AddNamespaces(asm.Namespaces.Where(x => asm.IsVerified || instance.ContainsTestsFor(asm.Assembly, x)).ToArray()); assembly.AddMembers(asm.Members.Where(x => asm.IsVerified || instance.ContainsTestsFor(asm.Assembly, x)).ToArray()); assembly.AddTests(asm.Tests.Where(x => asm.IsVerified || instance.IsTest(asm.Assembly, x)).ToArray()); if (hasNoTests(asm) || hasTests(assembly)) { newRun.AddAssembly(assembly); } } if (newRun.Assemblies.Count() == 0) { return(null); } return(newRun); }
private static RunOptions getRunOptions() { var assembly = new AssemblyOptions(@"P:\projects\mooseprofiler.git\MMProfiler\main\x86\Debug\Test.Target.dll"); var run = new RunnerOptions("NUnit"); run.AddAssembly(assembly); var optoins = new RunOptions(); optoins.AddTestRun(run); return(optoins); }
public void Debug(CacheTestMessage test) { try { AutoTest.Core.DebugLog.Debug.WriteDebug("Starting debug session"); var found = false; var targetFramework = ""; found = setBreakpointFromMethod(test, ref targetFramework); if (!found) { found = setBreakpointFromStacktrace(test, ref targetFramework); } if (!found) { return; } var process = new AutoTestRunnerDebugProcess(); var assembly = test.Assembly; AutoTest.Core.DebugLog.Debug.WriteDebug("Starting process suspended"); var command = ""; var options = new RunOptions(); var runner = new RunnerOptions(getTestRunner(TestRunnerConverter.ToString(test.Test.Runner), test.Assembly, test.Test.Name)); var asm = new AssemblyOptions(test.Assembly); asm.AddTest(test.Test.Name); runner.AddAssembly(asm); options.AddTestRun(runner); AutoTest.Core.DebugLog.Debug.WriteDebug(string.Format("Starting {0}", command)); var processID = process.StartPaused(options, test.Test.Runner); try { AutoTest.Core.DebugLog.Debug.WriteDebug("Locating debugger for Visual Studio " + _application.Version); var dbg2 = (EnvDTE80.Debugger2)_application.Debugger; var trans = (EnvDTE80.Transport)dbg2.Transports.Item("Default"); EnvDTE80.Engine[] dbgeng; if (_application.Version == "9.0") { dbgeng = new EnvDTE80.Engine[] { trans.Engines.Item("Managed") }; } else { if (process.Framework >= new Version(4, 0)) { dbgeng = new EnvDTE80.Engine[] { trans.Engines.Item(string.Format("Managed (v{0}.{1})", process.Framework.Major, process.Framework.Minor)) } } ; else { dbgeng = new EnvDTE80.Engine[] { trans.Engines.Item("Managed (v2.0, v1.1, v1.0)") } }; } EnvDTE80.Process2 proc2 = null; foreach (EnvDTE80.Process2 proc in dbg2.GetProcesses(trans, null)) { if (proc.ProcessID == processID) { proc2 = proc; break; } } if (proc2 != null) { proc2.Attach2(dbgeng); } } catch (Exception ex) { AutoTest.Core.DebugLog.Debug.WriteException(ex); throw; } finally { AutoTest.Core.DebugLog.Debug.WriteDebug("Resuming process"); process.Resume(); } } catch (Exception ex) { AutoTest.Core.DebugLog.Debug.WriteException(ex); } }