예제 #1
0
        public void TestsFromAGivenContainerShouldRunWithExpectedOutput()
        {
            var testAppName = "VSTestCore";
            var testAsset   = _testAssetsManager.CopyTestAsset(testAppName)
                              .WithSource()
                              .WithVersionVariables();

            var testRoot = testAsset.Path;

            var configuration = Environment.GetEnvironmentVariable("CONFIGURATION") ?? "Debug";

            new BuildCommand(testAsset)
            .Execute()
            .Should().Pass();

            var outputDll = Path.Combine(testRoot, "bin", configuration, "netcoreapp3.0", $"{testAppName}.dll");

            // Call vstest
            var result = new DotnetVSTestCommand(Log)
                         .Execute(outputDll, "--logger:console;verbosity=normal");

            if (!TestContext.IsLocalized())
            {
                result.StdOut
                .Should().Contain("Total tests: 2")
                .And.Contain("Passed: 1")
                .And.Contain("Failed: 1")
                .And.Contain("\u221a VSTestPassTest")
                .And.Contain("X VSTestFailTest");
            }

            result.ExitCode.Should().Be(1);
        }
예제 #2
0
        public void ItShouldSetDotnetRootToLocationOfDotnetExecutable()
        {
            var testAppName = "VSTestCore";
            var testAsset   = _testAssetsManager.CopyTestAsset(testAppName)
                              .WithSource()
                              .WithVersionVariables();

            var testRoot = testAsset.Path;

            var configuration = Environment.GetEnvironmentVariable("CONFIGURATION") ?? "Debug";

            new BuildCommand(testAsset)
            .Execute()
            .Should().Pass();

            var outputDll = Path.Combine(testRoot, "bin", configuration, "netcoreapp3.1", $"{testAppName}.dll");

            // Call vstest
            var result = new DotnetVSTestCommand(Log)
                         .Execute(outputDll, "--logger:console;verbosity=normal");

            result.ExitCode.Should().Be(1);
            var dotnet = result.StartInfo.FileName;

            Path.GetFileNameWithoutExtension(dotnet).Should().Be("dotnet");
            string dotnetRoot = Environment.Is64BitProcess ? "DOTNET_ROOT" : "DOTNET_ROOT(x86)";

            result.StartInfo.EnvironmentVariables.ContainsKey(dotnetRoot).Should().BeTrue($"because {dotnetRoot} should be set");
            result.StartInfo.EnvironmentVariables[dotnetRoot].Should().Be(Path.GetDirectoryName(dotnet));
        }
예제 #3
0
        public void GivenADllAndMultipleTestRunParametersItPassesThemToVStestConsoleInTheCorrectFormat()
        {
            var testProjectDirectory = this.CopyAndRestoreVSTestDotNetCoreTestApp("1");

            var configuration = Environment.GetEnvironmentVariable("CONFIGURATION") ?? "Debug";

            new BuildCommand(Log, testProjectDirectory)
            .Execute()
            .Should().Pass();

            var outputDll = Path.Combine(testProjectDirectory, "bin", configuration, "netcoreapp3.0", "VSTestTestRunParameters.dll");

            // Call test
            CommandResult result = new DotnetVSTestCommand(Log)
                                   .Execute(new[] {
                outputDll,
                "--logger:console;verbosity=normal",
                "--",
                "TestRunParameters.Parameter(name=\"myParam\",",
                "value=\"value\")",
                "TestRunParameters.Parameter(name=\"myParam2\",",
                "value=\"value",
                "with",
                "space\")"
            });

            // Verify
            if (!TestContext.IsLocalized())
            {
                result.StdOut.Should().NotMatch("The test run parameter argument '*' is invalid.");
                result.StdOut.Should().Contain("Total tests: 1");
                result.StdOut.Should().Contain("Passed: 1");
                result.StdOut.Should().Contain("\u221a VSTestTestRunParameters");
            }

            result.ExitCode.Should().Be(0);
        }