public void ExecuteOnlyOnce_WhenRetriestCountSetToOneAndNoFailedTestsPresent() { var log = Mock.Create<ILog>(); Mock.Arrange(() => log.Info(Arg.AnyString)); var consoleArgumentsProvider = Mock.Create<IConsoleArgumentsProvider>(); string newFileName = Path.GetTempFileName(); Mock.Arrange(() => consoleArgumentsProvider.NewTestResultPath).Returns(newFileName); Mock.Arrange(() => consoleArgumentsProvider.TestResultPath).Returns("Exceptions.trx"); Mock.Arrange(() => consoleArgumentsProvider.ConsoleArguments).Returns("ipconfig"); Mock.Arrange(() => consoleArgumentsProvider.RetriesCount).Returns(1); var processExecutionProvider = Mock.Create<IProcessExecutionProvider>(); Mock.Arrange(() => processExecutionProvider.ExecuteProcessWithAdditionalArguments(string.Empty)).DoNothing(); Mock.Arrange(() => processExecutionProvider.CurrentProcessWaitForExit()).DoNothing(); var fileSystemProvider = Mock.Create<IFileSystemProvider>(); Mock.Arrange(() => fileSystemProvider.SerializeTestRun(Arg.IsAny<TestRun>())).DoNothing(); TestRun testRun = new TestRun(); var testRunUnitTestResult = new TestRunUnitTestResult() { outcome = "Passed" }; testRun.Results = new TestRunUnitTestResult[] { testRunUnitTestResult, testRunUnitTestResult }; testRun.ResultSummary = new TestRunResultSummary(); testRun.ResultSummary.outcome = "Passed"; Mock.Arrange(() => fileSystemProvider.DeserializeTestRun(Arg.AnyString)).Returns(testRun); var microsoftTestRunProvider = Mock.Create<IMsTestTestRunProvider>(); Mock.Arrange(() => microsoftTestRunProvider.GetAllPassesTests(Arg.IsAny<TestRun>())).DoNothing(); Mock.Arrange(() => microsoftTestRunProvider.UpdatePassedTests(Arg.IsAny<List<TestRunUnitTestResult>>(), Arg.IsAny<List<TestRunUnitTestResult>>())).DoNothing(); Mock.Arrange(() => microsoftTestRunProvider.UpdateResultsSummary(Arg.IsAny<TestRun>())).DoNothing(); Mock.Arrange(() => microsoftTestRunProvider.GetAllNotPassedTests(Arg.IsAny<List<TestRunUnitTestResult>>())).Returns(new List<TestRunUnitTestResult>() { }); Mock.Arrange(() => microsoftTestRunProvider.GenerateAdditionalArgumentsForFailedTestsRun(Arg.IsAny<List<TestRunUnitTestResult>>(), Arg.AnyString)).DoNothing(); var engine = new TestExecutionService( microsoftTestRunProvider, fileSystemProvider, processExecutionProvider, consoleArgumentsProvider, log); int result = engine.ExecuteWithRetry(); Mock.Assert(() => fileSystemProvider.SerializeTestRun(Arg.IsAny<TestRun>()), Occurs.Exactly(1)); Assert.AreEqual<int>(0, result); }
public static void Main(string[] args) { string microsoftTestConsoleExePath = ConfigurationManager.AppSettings["MSTestConsoleRunnerPath"]; var consoleArgumentsProvider = new ConsoleArgumentsProvider(args); var engine = new TestExecutionService( new MsTestTestRunProvider(consoleArgumentsProvider, LogManager.GetLogger(typeof(MsTestTestRunProvider))), new FileSystemProvider(consoleArgumentsProvider), new ProcessExecutionProvider(microsoftTestConsoleExePath, consoleArgumentsProvider, LogManager.GetLogger(typeof(ProcessExecutionProvider))), consoleArgumentsProvider, LogManager.GetLogger(typeof(TestExecutionService))); try { int result = engine.ExecuteWithRetry(); Environment.Exit(result); } catch (Exception ex) { log.Error(string.Concat(ex.Message, ex.StackTrace)); } }