public void Sink_ShouldContainTestForAllSupportedTypeOfSources() { var sources = new[] { "ListContentSupport" + BoostTestDiscoverer.ExeExtension, "DllProject1" + BoostTestDiscoverer.DllExtension, "DllProject2" + BoostTestDiscoverer.DllExtension, }; var context = new DefaultTestContext(); var logger = new ConsoleMessageLogger(); var sink = new DefaultTestCaseDiscoverySink(); context.RegisterSettingProvider(BoostTestAdapterSettings.XmlRootName, new BoostTestAdapterSettingsProvider()); context.LoadEmbeddedSettings("BoostTestAdapterNunit.Resources.Settings.externalTestRunner.runsettings"); var boostTestDiscovererFactory = new StubBoostTestDiscovererFactory(); var boostTestDiscoverer = new BoostTestDiscoverer(boostTestDiscovererFactory); boostTestDiscoverer.DiscoverTests(sources, context, logger, sink); Assert.That(sink.Tests, Is.Not.Empty); // tests are found in the using the fake debughelper Assert.That(sink.Tests.Count(x => x.Source == "ListContentSupport" + BoostTestDiscoverer.ExeExtension), Is.EqualTo(8)); // the external runner does NOT support the two dll projects Assert.That(sink.Tests.Any(x => x.Source == "DllProject1" + BoostTestDiscoverer.DllExtension), Is.False); Assert.That(sink.Tests.Any(x => x.Source == "DllProject2" + BoostTestDiscoverer.DllExtension), Is.False); }
public void CorrectBoostTestDiscovererDispatching() { var bootTestDiscovererFactory = A.Fake<IBoostTestDiscovererFactory>(); var boostDllTestDiscoverer = A.Fake<IBoostTestDiscoverer>(); var boostExeTestDiscoverer = A.Fake<IBoostTestDiscoverer>(); var defaultTestContext = new DefaultTestContext(); var consoleMessageLogger = new ConsoleMessageLogger(); var defaultTestCaseDiscoverySink = new DefaultTestCaseDiscoverySink(); ITestDiscoverer boostTestDiscoverer = new BoostTestDiscoverer(bootTestDiscovererFactory); var projects = new string[] { "project1" + BoostTestDiscoverer.DllExtension, "project2" + BoostTestDiscoverer.ExeExtension, "project3" + BoostTestDiscoverer.ExeExtension, "project4" + BoostTestDiscoverer.DllExtension, "project5" + BoostTestDiscoverer.DllExtension, }; var dllProjectsExpected = new string[] { "project1" + BoostTestDiscoverer.DllExtension, "project4" + BoostTestDiscoverer.DllExtension, "project5" + BoostTestDiscoverer.DllExtension, }; var exeProjectsExpected = new string[] { "project2" + BoostTestDiscoverer.ExeExtension, "project3" + BoostTestDiscoverer.ExeExtension, }; IEnumerable<string> dllProjectsActual = null; IEnumerable<string> exeProjectsActual = null; A.CallTo(() => bootTestDiscovererFactory.GetTestDiscoverer(BoostTestDiscoverer.DllExtension, A<BoostTestDiscovererFactoryOptions>.Ignored)) .Returns(boostDllTestDiscoverer); A.CallTo(() => bootTestDiscovererFactory.GetTestDiscoverer(BoostTestDiscoverer.ExeExtension, A<BoostTestDiscovererFactoryOptions>.Ignored)) .Returns(boostExeTestDiscoverer); A.CallTo( () => boostDllTestDiscoverer.DiscoverTests(A<IEnumerable<string>>.Ignored, defaultTestContext, consoleMessageLogger, defaultTestCaseDiscoverySink)) .Invokes(call => dllProjectsActual = call.GetArgument<IEnumerable<string>>(0)); A.CallTo( () => boostExeTestDiscoverer.DiscoverTests(A<IEnumerable<string>>.Ignored, defaultTestContext, consoleMessageLogger, defaultTestCaseDiscoverySink)) .Invokes(call => exeProjectsActual = call.GetArgument<IEnumerable<string>>(0)); boostTestDiscoverer.DiscoverTests(projects, defaultTestContext, consoleMessageLogger, defaultTestCaseDiscoverySink); Assert.AreEqual(dllProjectsExpected, dllProjectsActual); Assert.AreEqual(exeProjectsExpected, exeProjectsActual); }
/// <summary> /// Applies the discovery procedure over the provided sources /// </summary> /// <param name="provider">An IVisualStudioInstanceProvider instance</param> /// <param name="sources">The sources which to discover tests from</param> /// <param name="context">The IDiscoveryContext to use</param> /// <returns>An enumeration of discovered test cases</returns> private IEnumerable<VSTestCase> Discover(IVisualStudioInstanceProvider provider, IEnumerable<string> sources, IDiscoveryContext context) { ConsoleMessageLogger logger = new ConsoleMessageLogger(); DefaultTestCaseDiscoverySink sink = new DefaultTestCaseDiscoverySink(); IBoostTestDiscoverer discoverer = new SourceCodeDiscoverer(provider); discoverer.DiscoverTests(sources, context, logger, sink); return sink.Tests; }
/// <summary> /// Applies the discovery process over the provided DummySolution /// </summary> /// <param name="solution">The dummy solution on which to apply test discovery</param> /// <returns>The list of tests which were discovered from the dummy solution</returns> private IList<TestCase> DiscoverTests(DummySolution solution) { SourceCodeDiscoverer discoverer = new SourceCodeDiscoverer(solution.Provider); DefaultTestContext context = new DefaultTestContext(); DefaultTestCaseDiscoverySink discoverySink = new DefaultTestCaseDiscoverySink(); ConsoleMessageLogger logger = new ConsoleMessageLogger(); discoverer.DiscoverTests(new[] { solution.Source }, context, logger, discoverySink); return discoverySink.Tests.ToList(); }
public void DiscoveryFileMapDiscovery() { string listing = TestHelper.CopyEmbeddedResourceToDirectory("BoostTestAdapterNunit.Resources.TestLists", "sample.test.list.xml", Path.GetTempPath()); try { ExternalBoostTestRunnerSettings settings = new ExternalBoostTestRunnerSettings { ExtensionType = ".dll", DiscoveryMethodType = DiscoveryMethodType.DiscoveryFileMap }; settings.DiscoveryFileMap["test_1.dll"] = listing; ExternalBoostTestDiscoverer discoverer = new ExternalBoostTestDiscoverer(settings); DefaultTestContext context = new DefaultTestContext(); ConsoleMessageLogger logger = new ConsoleMessageLogger(); DefaultTestCaseDiscoverySink sink = new DefaultTestCaseDiscoverySink(); const string mappedSource = "C:\\test_1.dll"; const string unmappedSource = "C:\\test_2.dll"; discoverer.DiscoverTests(new string[] { mappedSource, unmappedSource }, context, logger, sink); // A total of 7 tests should be discovered as described in the Xml descriptor Assert.That(sink.Tests.Count(), Is.EqualTo(7)); // All of the discovered tests should originate from C:\test_1.dll. // No mapping to C:\test_2.dll exist so no tests should be discovered from that source. Assert.That(sink.Tests.Count((test) => test.Source == mappedSource), Is.EqualTo(7)); const string masterTestSuite = "Test runner test"; AssertVSTestCaseProperties(sink.Tests, QualifiedNameBuilder.FromString(masterTestSuite, "test1"), mappedSource, new SourceFileInfo("test_runner_test.cpp", 26)); AssertVSTestCaseProperties(sink.Tests, QualifiedNameBuilder.FromString(masterTestSuite, "test2"), mappedSource, new SourceFileInfo("test_runner_test.cpp", 35)); AssertVSTestCaseProperties(sink.Tests, QualifiedNameBuilder.FromString(masterTestSuite, "SampleSuite/SampleNestedSuite/test3"), mappedSource, new SourceFileInfo("test_runner_test.cpp", 48)); AssertVSTestCaseProperties(sink.Tests, QualifiedNameBuilder.FromString(masterTestSuite, "TemplateSuite/my_test<char>"), mappedSource, new SourceFileInfo("test_runner_test.cpp", 79)); AssertVSTestCaseProperties(sink.Tests, QualifiedNameBuilder.FromString(masterTestSuite, "TemplateSuite/my_test<int>"), mappedSource, new SourceFileInfo("test_runner_test.cpp", 79)); AssertVSTestCaseProperties(sink.Tests, QualifiedNameBuilder.FromString(masterTestSuite, "TemplateSuite/my_test<float>"), mappedSource, new SourceFileInfo("test_runner_test.cpp", 79)); AssertVSTestCaseProperties(sink.Tests, QualifiedNameBuilder.FromString(masterTestSuite, "TemplateSuite/my_test<double>"), mappedSource, new SourceFileInfo("test_runner_test.cpp", 79)); } finally { if (File.Exists(listing)) { File.Delete(listing); } } }