コード例 #1
0
        public void StrykerCLI_WithNoArgumentsAndNoConfigFile_ShouldStartStrykerWithConfigOptions()
        {
            var            mock             = new Mock <IStrykerRunner>(MockBehavior.Strict);
            StrykerOptions options          = new StrykerOptions("", "Console", "", 1000, null, "trace", false, 1, 90, 80, 70);
            string         currentDirectory = Directory.GetCurrentDirectory();

            Directory.SetCurrentDirectory($"..{Path.DirectorySeparatorChar}");
            var runResults = new StrykerRunResult(options, 0.3M);

            mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>())).Returns(runResults).Verifiable();
            var target = new StrykerCLI(mock.Object);

            target.Run(new string[] { });

            mock.VerifyAll();

            Directory.SetCurrentDirectory(currentDirectory);
        }
コード例 #2
0
        public void StrykerCLI_WithNoArgumentsAndNoConfigFile_ShouldStartStrykerWithConfigOptions()
        {
            var    mock             = new Mock <IStrykerRunner>(MockBehavior.Strict);
            var    options          = new StrykerOptions();
            string currentDirectory = Directory.GetCurrentDirectory();

            Directory.SetCurrentDirectory($"..{Path.DirectorySeparatorChar}");
            var runResults = new StrykerRunResult(options, 0.3);

            mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>(), It.IsAny <IEnumerable <LogMessage> >())).Returns(runResults).Verifiable();
            var target = new StrykerCLI(mock.Object);

            target.Run(new string[] { });

            mock.VerifyAll();

            Directory.SetCurrentDirectory(currentDirectory);
        }
コード例 #3
0
        public void StrykerCLI_WithNoArgumentsAndNoConfigFile_ShouldStartStrykerWithConfigOptions()
        {
            var mock = new Mock <IStrykerRunner>(MockBehavior.Strict);

            mock.Setup(x => x.RunMutationTest(It.Is <StrykerOptions>(c => c.AdditionalTimeoutMS == 30000 &&
                                                                     c.LogOptions.LogLevel == LogEventLevel.Warning &&
                                                                     c.LogOptions.LogToFile == false &&
                                                                     c.ProjectUnderTestNameFilter == null &&
                                                                     c.Reporter == "Console" &&
                                                                     c.MaxConcurrentTestrunners == int.MaxValue
                                                                     ))).Verifiable();
            File.Move("stryker-config.json", "temp.json");
            var target = new StrykerCLI(mock.Object);

            target.Run(new string[] { });

            mock.VerifyAll();
            File.Move("temp.json", "stryker-config.json");
        }
コード例 #4
0
        public void StrykerCLI_WithLogConsoleArgument_ShouldPassLogConsoleArgumentsToStryker(string argName)
        {
            StrykerOptions actualOptions = null;
            var            runResults    = new StrykerRunResult(new StrykerOptions(), 0.3M);
            var            mock          = new Mock <IStrykerRunner>(MockBehavior.Strict);

            mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>()))
            .Callback <StrykerOptions>((c) => actualOptions = c)
            .Returns(runResults)
            .Verifiable();

            var target = new StrykerCLI(mock.Object);

            target.Run(new[] { argName, "debug" });

            mock.VerifyAll();
            actualOptions.LogOptions.LogLevel.ShouldBe(LogEventLevel.Debug);
            actualOptions.LogOptions.LogToFile.ShouldBeFalse();
        }
コード例 #5
0
        public void StrykerCLI_ExcludedMutationsNamesShouldMapToMutatorTypes(Mutator expectedType, params string[] argValues)
        {
            var            mock       = new Mock <IStrykerRunner>(MockBehavior.Strict);
            StrykerOptions options    = new StrykerOptions();
            var            runResults = new StrykerRunResult(options, 0.3M);

            mock.Setup(x => x.RunMutationTest(It.IsAny <StrykerOptions>())).Returns(runResults);

            var target = new StrykerCLI(mock.Object);

            argValues.Count().ShouldBeGreaterThan(0);

            foreach (string argValue in argValues)
            {
                target.Run(new string[] { "-em", $"['{argValue}']" });

                mock.Verify(x => x.RunMutationTest(It.Is <StrykerOptions>(o => o.ExcludedMutations.Single() == expectedType)));
            }
        }
コード例 #6
0
        public void StrykerCLI_WithNoArgumentsAndEmptyConfig_ShouldStartStrykerWithDefaultOptions()
        {
            var mock = new Mock <IStrykerRunner>(MockBehavior.Strict);

            mock.Setup(x => x.RunMutationTest(It.Is <StrykerOptions>(c => c.AdditionalTimeoutMS == 30000 &&
                                                                     c.LogOptions.LogLevel == LogEventLevel.Warning &&
                                                                     c.LogOptions.LogToFile == false &&
                                                                     c.ProjectUnderTestNameFilter == null &&
                                                                     c.Reporter == "Console" &&
                                                                     c.MaxConcurrentTestrunners == int.MaxValue &&
                                                                     c.ThresholdOptions.ThresholdBreak == 0 &&
                                                                     c.ThresholdOptions.ThresholdLow == 60 &&
                                                                     c.ThresholdOptions.ThresholdHigh == 80))).Verifiable();
            var target = new StrykerCLI(mock.Object);

            target.Run(new string[] { });

            mock.VerifyAll();
        }
コード例 #7
0
        public void ShouldKeepDefaultDashboardUrlWhenArgumentNotProvided()
        {
            StrykerOptions options = null;
            var runResults = new StrykerRunResult(new StrykerOptions(), 0.3);

            var mock = new Mock<IStrykerRunner>(MockBehavior.Strict);
            mock.Setup(x => x.RunMutationTest(It.IsAny<StrykerOptions>(), It.IsAny<IEnumerable<LogMessage>>()))
                .Callback<StrykerOptions, IEnumerable<LogMessage>>((c, m) => options = c)
                .Returns(runResults)
                .Verifiable();

            var target = new StrykerCLI(mock.Object);

            target.Run(new string[] { });

            mock.VerifyAll();

            options.DashboardUrl.ShouldBe("https://dashboard.stryker-mutator.io");
        }
コード例 #8
0
        public void ShouldOverwriteDefaultDashboardUrlWhenPassed(string argName)
        {
            StrykerOptions options = null;
            var runResults = new StrykerRunResult(new StrykerOptions(), 0.3);

            var mock = new Mock<IStrykerRunner>(MockBehavior.Strict);
            mock.Setup(x => x.RunMutationTest(It.IsAny<StrykerOptions>(), It.IsAny<IEnumerable<LogMessage>>()))
                .Callback<StrykerOptions, IEnumerable<LogMessage>>((c, m) => options = c)
                .Returns(runResults)
                .Verifiable();

            var target = new StrykerCLI(mock.Object);

            target.Run(new string[] { argName });

            mock.VerifyAll();

            options.DashboardUrl.ShouldBe("https://www.example.com/");
        }
コード例 #9
0
        public void ShouldEnableDiffFeatureWhenDashboardComparePassed(params string[] argNames)
        {
            StrykerOptions options = null;
            var runResults = new StrykerRunResult(new StrykerOptions(), 0.3);

            var mock = new Mock<IStrykerRunner>(MockBehavior.Strict);
            mock.Setup(x => x.RunMutationTest(It.IsAny<StrykerOptions>(), It.IsAny<IEnumerable<LogMessage>>()))
                .Callback<StrykerOptions, IEnumerable<LogMessage>>((c, m) => options = c)
                .Returns(runResults)
                .Verifiable();

            var target = new StrykerCLI(mock.Object);

            target.Run(argNames);

            mock.VerifyAll();

            options.DiffEnabled.ShouldBeTrue();
        }
コード例 #10
0
        public void StrykerCLI_WithDevModeArgument_ShouldPassDevModeArgumentsToStryker(string argName)
        {
            StrykerOptions actualOptions = null;
            var runResults = new StrykerRunResult(new StrykerOptions(), 0.3);

            var mock = new Mock<IStrykerRunner>(MockBehavior.Strict);
            mock.Setup(x => x.RunMutationTest(It.IsAny<StrykerOptions>(), It.IsAny<IEnumerable<LogMessage>>()))
                .Callback<StrykerOptions, IEnumerable<LogMessage>>((c, m) => actualOptions = c)
                .Returns(runResults)
                .Verifiable();

            var target = new StrykerCLI(mock.Object);

            target.Run(new string[] { argName });

            mock.VerifyAll();

            actualOptions.DevMode.ShouldBeTrue();
        }
コード例 #11
0
        public void StrykerCLI_WithConfigFile_ShouldStartStrykerWithConfigFileOptions(string argName)
        {
            var mock = new Mock <IStrykerRunner>(MockBehavior.Strict);

            mock.Setup(x => x.RunMutationTest(It.Is <StrykerOptions>(c => c.AdditionalTimeoutMS == 9999 &&
                                                                     c.LogOptions.LogLevel == LogEventLevel.Verbose &&
                                                                     c.LogOptions.LogToFile == true &&
                                                                     c.ProjectUnderTestNameFilter == "ExampleProject.csproj" &&
                                                                     c.Reporter == "ReportOnly" &&
                                                                     c.MaxConcurrentTestrunners == 10 &&
                                                                     c.ThresholdOptions.ThresholdBreak == 20 &&
                                                                     c.ThresholdOptions.ThresholdLow == 30 &&
                                                                     c.ThresholdOptions.ThresholdHigh == 40))).Verifiable();

            var target = new StrykerCLI(mock.Object);

            target.Run(new string[] { argName, "filled-stryker-config.json" });

            mock.VerifyAll();
        }
コード例 #12
0
        public void StrykerCLI_WithNoArgumentsAndNoConfigFile_ShouldStartStrykerWithConfigOptions()
        {
            var mock = new Mock <IStrykerRunner>(MockBehavior.Strict);

            mock.Setup(x => x.RunMutationTest(It.Is <StrykerOptions>(c => c.AdditionalTimeoutMS == 30000 &&
                                                                     c.LogOptions.LogLevel == LogEventLevel.Information &&
                                                                     c.LogOptions.LogToFile == false &&
                                                                     c.ProjectUnderTestNameFilter == null &&
                                                                     c.Reporter == "Console" &&
                                                                     c.MaxConcurrentTestrunners == int.MaxValue &&
                                                                     c.ThresholdOptions.ThresholdBreak == 0 &&
                                                                     c.ThresholdOptions.ThresholdLow == 60 &&
                                                                     c.ThresholdOptions.ThresholdHigh == 80))).Verifiable();
            string currentDirectory = Directory.GetCurrentDirectory();

            Directory.SetCurrentDirectory($"..{Path.DirectorySeparatorChar}");
            var target = new StrykerCLI(mock.Object);

            target.Run(new string[] { });

            mock.VerifyAll();

            Directory.SetCurrentDirectory(currentDirectory);
        }