예제 #1
0
파일: TestRunner.cs 프로젝트: Sqdw/SQUnit
 public TestResult[] RunTestsInFile(string filePath, TestSuiteFactoryDelegate testSuiteFactory)
 {
     _testSuite = testSuiteFactory(_driver, filePath);
     WaitForTestsToFinish();
     _testSuite.SaveScreenShot();
     return _testSuite.GetTestResults();
 }
예제 #2
0
 /// <summary>
 /// Notifies the listener at the end of a test suite.
 /// </summary>
 public void EndTestSuite(ITestSuite testSuite)
 {
     _testSuiteLevel--;
     if (_testSuiteLevel == 0)
     {
         _timer.Stop();
     }
 }
예제 #3
0
        public void RunTestScenario(
            TestScenarioExecCmdletBase cmdlet,
            ITestSuite testSuite,
            ITestScenario testScenario)
        {
            // run BeforeScenario scriptblocks
            //if (null != testSuite) {
            // 20140208
            // if (null == testSuite || null == testScenario || 0 >= testScenario.TestCases.Count) return;
            if (null == testSuite || null == testScenario || 0 == testScenario.TestCases.Count) return;
            // if (null != testSuite && null != testScenario && 0 < testScenario.TestCases.Count) {

            cmdlet.runTwoScriptBlockCollections(
                // 20141211
                // testSuite.BeforeScenario,
                testSuite.BeforeScenario.Select(codeblock => ScriptBlock.Create(codeblock.Code)).ToArray(),
                null, // alternate scriptblocks
                cmdlet,
                testSuite.BeforeScenarioParameters);
            //}
            
            foreach (ITestCase testCase in testScenario.TestCases) {
                cmdlet.runTwoScriptBlockCollections(
                    // 20141211
                    // testScenario.BeforeTest,
                    testScenario.BeforeTest.Select(codeblock => ScriptBlock.Create(codeblock.Code)).ToArray(),
                    null, // alternate scriptblocks
                    cmdlet,
                    testScenario.BeforeTestParameters);
                
                cmdlet.runTwoScriptBlockCollections(
                    // 20141211
                    // testCase.TestCode,
                    testCase.TestCode.Select(codeblock => ScriptBlock.Create(codeblock.Code)).ToArray(),
                    null,
                    cmdlet,
                    testCase.TestCodeParameters);
                
                cmdlet.runTwoScriptBlockCollections(
                    // 20141211
                    // testScenario.AfterTest,
                    testScenario.AfterTest.Select(codeblock => ScriptBlock.Create(codeblock.Code)).ToArray(),
                    null, // alternate scriptblocks
                    cmdlet,
                    testScenario.AfterTestParameters);
            }
            
            // run AfterScenario scriptblocks
            //if (null != testSuite) {
            //if (null != testSuite && null != testScenario && 0 < testScenario.TestCases.Count) {
            cmdlet.runTwoScriptBlockCollections(
                // 20141211
                // testSuite.AfterScenario,
                testSuite.AfterScenario.Select(codeblock => ScriptBlock.Create(codeblock.Code)).ToArray(),
                null, // alternate scriptblocks
                cmdlet,
                testSuite.AfterScenarioParameters);
        }
예제 #4
0
 public void RunTestSuite(
     TestSuiteExecCmdletBase cmdlet,
     ITestSuite testSuite)
 {
     foreach (var testScenario in testSuite.TestScenarios.Where(testScenario => null != testScenario.TestCases && 0 < testScenario.TestCases.Count))
     {
         cmdlet.runTwoScriptBlockCollections(
             // 20141211
             // testSuite.BeforeScenario,
             testSuite.BeforeScenario.Select(codeblock => ScriptBlock.Create(codeblock.Code)).ToArray(),
             null, // alternate scriptblocks
             cmdlet,
             testSuite.BeforeScenarioParameters);
         //}
         
         //if (null != testScenario.TestCases && 0 < testScenario.TestCases.Count) {
             
         foreach (ITestCase testCase in testScenario.TestCases) {
                 
             cmdlet.runTwoScriptBlockCollections(
                 // 20141211
                 // testScenario.BeforeTest,
                 testScenario.BeforeTest.Select(codeblock => ScriptBlock.Create(codeblock.Code)).ToArray(),
                 null, // alternate scriptblocks
                 cmdlet,
                 testScenario.BeforeTestParameters);
                 
             cmdlet.runTwoScriptBlockCollections(
                 // 20141211
                 // testCase.TestCode,
                 testCase.TestCode.Select(codeblock => ScriptBlock.Create(codeblock.Code)).ToArray(),
                 null,
                 cmdlet,
                 testCase.TestCodeParameters);
                 
             cmdlet.runTwoScriptBlockCollections(
                 // 20141211
                 // testScenario.AfterTest,
                 testScenario.AfterTest.Select(codeblock => ScriptBlock.Create(codeblock.Code)).ToArray(),
                 null, // alternate scriptblocks
                 cmdlet,
                 testScenario.AfterTestParameters);
                 
         }
         //}
         
         // run AfterScenario scriptblocks
         //if (null != testScenario) {
         cmdlet.runTwoScriptBlockCollections(
             // 20141211
             // testSuite.AfterScenario,
             testSuite.AfterScenario.Select(codeblock => ScriptBlock.Create(codeblock.Code)).ToArray(),
             null, // alternate scriptblocks
             cmdlet,
             testSuite.AfterScenarioParameters);
     }
 }
예제 #5
0
        public VSTracker(IFrameworkHandle frameworkHandle, ITestSuite suite)
        {
            _frameworkHandle = frameworkHandle;

            _expectedTests = new Dictionary<string, TestCase>();
            foreach (var testCase in suite.TestCases)
            {
                foreach (var test in testCase.Tests)
                {
                    _expectedTests.Add(createDictionaryKey(test), test.ToVSTest());
                }
            }
        }
예제 #6
0
        internal static ITestScenario AddTestScenario(
            ITestSuite testSuite,
            string name,
            string id,
            string description,
            string testSuiteName,
            string testSuiteId)
        {
            AddTMXTestScenarioCommand cmdlet =
                new AddTMXTestScenarioCommand();

            if (null != name && string.Empty != name) {
                cmdlet.Name = name;
            }
            if (null != id && string.Empty != id) {
                cmdlet.Id = id;
            }
            if (null != description && string.Empty != description) {
                cmdlet.Description = description;
            }
            if (null == testSuite) {

                if (null != testSuiteName && string.Empty != testSuiteName) {

                    cmdlet.TestSuiteName = testSuiteName;
                }
                if (null != testSuiteId && string.Empty != testSuiteId) {

                    cmdlet.TestSuiteId = testSuiteId;
                }

                if ((null == testSuiteName || string.Empty == testSuiteName) &&
                    (null == testSuiteId || string.Empty == testSuiteId)) {

                    cmdlet.InputObject =
                        TestData.CurrentTestSuite;
                }

            } else {

                cmdlet.InputObject =
                    (TestSuite)testSuite;
            }

            TMXAddTestScenarioCommand command =
                new TMXAddTestScenarioCommand(cmdlet);
            command.Execute();

            return (ITestScenario)TMX.TestData.CurrentTestScenario;
        }
        public TestCaseRunInvoker(
            IRun run,
            ITestSuite testSuite,
            ITestCase testCase,
            MethodInfo setUp,
            MethodInfo tearDown
            )
            : base(run)
        {
            this.testSuite = testSuite;
            this.testCase = testCase;

            this.setUp = setUp;
            this.tearDown = tearDown;
        }
예제 #8
0
 public virtual TestStat RefreshSuiteStatistics(ITestSuite suite, bool skipAutomatic)
 {
     var testSuiteStatistics = new TestStat();
     foreach (var testScenario in suite.TestScenarios) {
         RefreshScenarioStatistics(testScenario, skipAutomatic);
         testSuiteStatistics.All += testScenario.Statistics.All;
         testSuiteStatistics.Passed += testScenario.Statistics.Passed;
         testSuiteStatistics.Failed += testScenario.Statistics.Failed;
         testSuiteStatistics.NotTested += testScenario.Statistics.NotTested;
         testSuiteStatistics.TimeSpent += testScenario.Statistics.TimeSpent;
         testSuiteStatistics.PassedButWithBadSmell += testScenario.Statistics.PassedButWithBadSmell;
     }
     suite.Statistics = testSuiteStatistics;
     setTestSuiteStatus(suite);
     return testSuiteStatistics;
 }
예제 #9
0
        public GTestTestCase(string name, ITestSuite suite)
        {
            if(name == null) throw new ArgumentNullException("name");
            if(suite == null) throw new ArgumentNullException("suite");

            if (name.Contains("#"))
            {
                Description = name.Substring(name.IndexOf('#') + 1);
                name = name.Substring(0, name.IndexOf('#'));
            }
            name = name.TrimEnd(' ', '.').Trim();

            if (string.IsNullOrEmpty(name)) throw new ArgumentException("Name cannot be empty, and must consist of more than ' 's and '.'s", "name");

            Suite = suite;
            Name = name;
            LastResult = new TestResult() {Message = "Not Run", Outcome = TestStatus.NotRun};
            tests = new List<ITest>();
        }
예제 #10
0
        public GTestRunOutputParser(ITestSuite testSuite, ITestLogger logger)
        {
            _expectedTests = new Dictionary<string, ITest>();
            foreach (var testCase in testSuite.TestCases)
            {
                foreach (var test in testCase.Tests)
                {
                    var runName = GTestNameFormatter.GetRunName(test);
                    if (!_expectedTests.ContainsKey(runName))
                    {
                        _expectedTests.Add(GTestNameFormatter.GetRunName(test), test);
                    }
                    else
                    {
                        logger.Warning(string.Format("Seem to have multiple test cases with the same name... Skipping {0}", runName));
                    }
                }
            }

            _currentTestRun = new StringBuilder();
            _logger = logger;
        }
예제 #11
0
        internal static bool AddTestScenario(ITestSuite testSuite,
                                             string testScenarioName,
                                             string testScenarioId,
                                             string testScenarioDescription,
                                             string testSuiteName,
                                             string testSuiteId,
                                             Guid testPlatformId,
                                             // 20141211
                                             // ScriptBlock[] testScenarioBeforeTest,
                                             // ScriptBlock[] testScenarioAfterTest)
                                             ICodeBlock[] testScenarioBeforeTest,
                                             ICodeBlock[] testScenarioAfterTest)
        {
            bool result = false;
            
            // clean up the last empty test result
            // in the previous scenario
            if (null != TestData.CurrentTestScenario) {
                
                if (TestData.CurrentTestScenario.TestResults.Count > 0) {
                    
                    if (TestData.CurrentTestScenario.TestResults[TestData.CurrentTestScenario.TestResults.Count - 1].Details.Count == 0 &&
                        TestData.CurrentTestScenario.TestResults[TestData.CurrentTestScenario.TestResults.Count - 1].Status == TestStateNotTested) {

                        TestData.CurrentTestScenario.TestResults.RemoveAt(TestData.CurrentTestScenario.TestResults.Count - 1);
                    }
                }
                
//                if ((null != TestData.CurrentTestResult.Name &&
//                     string.Empty != TestData.CurrentTestResult.Name) ||
//                    (0 < TestData.CurrentTestResult.Details.Count)) {
//                    //TmxHelper.TestCaseStarted =
//                    //    System.DateTime.Now;
//                    TestData.CurrentTestScenario.TestResults.Add(new TestResult(TestData.CurrentTestScenario.Id, TestData.CurrentTestSuite.Id));
//                    TestData.CurrentTestScenario.TestResults[TestData.CurrentTestScenario.TestResults.Count - 1] =
//                        TestData.CurrentTestResult;
//                }
            }
            
            // set time spent on the previous scenario
            if (null != TestData.CurrentTestScenario) {
                
                if (DateTime.MinValue != TestData.CurrentTestScenario.Timestamp) {
                    
                    TestData.CurrentTestScenario.SetTimeSpent(
                        TestData.CurrentTestScenario.TimeSpent +=
                        (DateTime.Now - TestData.CurrentTestScenario.Timestamp).TotalSeconds);
                    TestData.CurrentTestScenario.Timestamp = DateTime.MinValue;
                }
            }
            
            if (testSuite != null) {
                
                TestData.CurrentTestSuite = testSuite;
            } else if (!string.IsNullOrEmpty(testSuiteName)) {
                
                var testSuite2 = GetTestSuite(testSuiteName, testSuiteId, testPlatformId);
                if (testSuite2 != null) {
                    
                    TestData.CurrentTestSuite = testSuite2;
                }
            } else if (!string.IsNullOrEmpty(testSuiteId)) {
                
                var testSuite3 = GetTestSuite(testSuiteName, testSuiteId, testPlatformId);
                if (testSuite3 != null) {
                    
                    TestData.CurrentTestSuite = testSuite3;
                }
            }
            
            if (TestData.CurrentTestSuite == null) {
                
                return result;
            }
            
            // 20140716
            try {
                // 20140716
                // if (1 == TestData.CurrentTestSuite.TestScenarios.Count && "autogenerated" == TestData.CurrentTestSuite.TestScenarios[0].Name &&
                // 20140718
                // if (1 == TestData.CurrentTestSuite.TestScenarios.Count && TestData.Autogenerated == TestData.CurrentTestSuite.TestScenarios[0].Name &&
                //     1 == TestData.CurrentTestSuite.TestScenarios[0].TestResults.Count && TestResultOrigins.Automatic == TestData.CurrentTestSuite.TestScenarios[0].TestResults[0].Origin) {
                if (1 <= TestData.CurrentTestSuite.TestScenarios.Count && TestData.Autogenerated == TestData.CurrentTestSuite.TestScenarios[0].Name &&
                    (0 == TestData.CurrentTestSuite.TestScenarios[0].TestResults.Count ||
                     1 == TestData.CurrentTestSuite.TestScenarios[0].TestResults.Count && TestResultOrigins.Automatic == TestData.CurrentTestSuite.TestScenarios[0].TestResults[0].Origin)) {
                    
                    TestData.CurrentTestSuite.TestScenarios.RemoveAt(0);
                }
            }
            catch {}
            
            if (string.IsNullOrEmpty(testScenarioId))
                testScenarioId = GetTestScenarioId();
            
//            if (null != TestData.TestSuites && 0 < TestData.TestSuites.Count) {
//                int lastTestSuiteNumber = TestData.TestSuites.Count - 1;
//
//                if (null != TestData.TestSuites[lastTestSuiteNumber].TestScenarios && 0 < TestData.TestSuites[lastTestSuiteNumber].TestScenarios.Count) {
//                    int lastTestScenarioNumber = TestData.TestSuites[lastTestSuiteNumber].TestScenarios.Count - 1;
//
//                    if (TestData.CurrentTestScenario.Name == TestData.TestSuites[lastTestSuiteNumber].TestScenarios[lastTestScenarioNumber].Name &&
//                        TestData.CurrentTestScenario.Id == TestData.TestSuites[lastTestSuiteNumber].TestScenarios[lastTestScenarioNumber].Id) {
//                        
//                        TestData.TestSuites[lastTestSuiteNumber].TestScenarios[lastTestScenarioNumber] = TestData.CurrentTestScenario;
//                    }
//                }
//            }
            
            TestData.CurrentTestSuite.TestScenarios.Add(
                new TestScenario(testScenarioName, testScenarioId, TestData.CurrentTestSuite.Id) { SuiteUniqueId = TestData.CurrentTestSuite.UniqueId });
            
            if (!string.IsNullOrEmpty(testScenarioDescription))
                TestData.CurrentTestSuite.TestScenarios[CurrentTestSuite.TestScenarios.Count - 1].Description = testScenarioDescription;
            
            TestData.CurrentTestScenario = 
                (TestScenario)TestData.CurrentTestSuite.TestScenarios[CurrentTestSuite.TestScenarios.Count - 1];
            
            TestData.CurrentTestScenario.BeforeTest = testScenarioBeforeTest;
            TestData.CurrentTestScenario.AfterTest = testScenarioAfterTest;
            
            TestData.CurrentTestScenario.PlatformUniqueId = testPlatformId != Guid.Empty ? testPlatformId : TestData.CurrentTestSuite.PlatformUniqueId;
            TestData.CurrentTestScenario.PlatformId = TestPlatforms.First(tp => tp.UniqueId == CurrentTestScenario.PlatformUniqueId).Id;
            
            // set the initial time for this scenario's session
            CurrentTestScenario.SetNow();
            
            OnTmxNewTestScenarioAdded(TestData.CurrentTestScenario, null);
            
            if (Preferences.Storage) {
                
                using (var session = StorageHelper.SessionFactory.OpenSession())
                    session.Save(TestData.CurrentTestScenario);
            }
            
            result = true;
            
            return result;
        }
예제 #12
0
        private void CreateMockSuite(out ITestSuite suite)
        {
            Mock<ITest> mockTest = new Mock<ITest>();
            Mock<ITestCase> mockCase = new Mock<ITestCase>();
            Mock<ITestSuite> mockSuite = new Mock<ITestSuite>();

            mockTest.Setup(t => t.Case).Returns(mockCase.Object);
            mockTest.Setup(t => t.Completed(It.IsAny<TestResult>())).Raises(t => t.TestCompleted += null);
            mockTest.Setup(t => t.Name).Returns("Test");

            mockCase.Setup(cs => cs.Name).Returns("Test");
            mockCase.Setup(cs => cs.Suite).Returns(mockSuite.Object);
            mockCase.Setup(cs => cs.Tests).Returns(new[] {mockTest.Object});

            mockSuite.Setup(s => s.RunTarget).Returns("Test.exe");
            mockSuite.Setup(s => s.Name).Returns("TestSuite");
            mockSuite.Setup(s => s.TestCases).Returns(new[] {mockCase.Object});

            suite = mockSuite.Object;
        }
예제 #13
0
        public void RunTestScenario(
        	TestScenarioExecCmdletBase cmdlet,
        	ITestSuite testSuite,
        	ITestScenario testScenario)
        {
            // run BeforeScenario scriptblocks
            //if (null != testSuite) {
            if (null != testSuite && null != testScenario && 0 < testScenario.TestCases.Count) {
                cmdlet.runTwoScriptBlockCollections(
                    testSuite.BeforeScenario,
                    null, // alternate scriptblocks
                    cmdlet,
                    testSuite.BeforeScenarioParameters);
            //}

            foreach (ITestCase testCase in testScenario.TestCases) {
                cmdlet.runTwoScriptBlockCollections(
                    testScenario.BeforeTest,
                    null, // alternate scriptblocks
                    cmdlet,
                    testScenario.BeforeTestParameters);

                cmdlet.runTwoScriptBlockCollections(
                    testCase.TestCode,
                    null,
                    cmdlet,
                    testCase.TestCodeParameters);

                cmdlet.runTwoScriptBlockCollections(
                    testScenario.AfterTest,
                    null, // alternate scriptblocks
                    cmdlet,
                    testScenario.AfterTestParameters);
            }

            // run AfterScenario scriptblocks
            //if (null != testSuite) {
            //if (null != testSuite && null != testScenario && 0 < testScenario.TestCases.Count) {
                cmdlet.runTwoScriptBlockCollections(
                    testSuite.AfterScenario,
                    null, // alternate scriptblocks
                    cmdlet,
                    testSuite.AfterScenarioParameters);
            }
        }
예제 #14
0
 public ITestCase BuildTestCase(ITestSuite suite, string testCaseName)
 {
     return new GTestTestCase(testCaseName, suite);
 }
예제 #15
0
        // 20140720
        public void RunTestCase(
            TestCaseExecCmdletBase cmdlet,
            // 20140720
//            TestSuite testSuite,
//            TestScenario testScenario)
            ITestSuite testSuite,
            ITestScenario testScenario)
        {
            
            var testCase =
                TestData.GetTestCase(
                    testSuite,
                    string.Empty, //cmdlet.Name
                    cmdlet.Id,
                    testScenario.Name,
                    testScenario.Id,
                    testSuite.Name,
                    testSuite.Id,
                    // 20141119
                    // testScenario.PlatformId);
                    testScenario.PlatformUniqueId);
            if (null == testCase) {
                return;
            }
            
            // run BeforeScenario scriptblocks
            //if (null != testSuite) {
            if (null != testSuite && null != testScenario) {
                cmdlet.runTwoScriptBlockCollections(
                    // 20141211
                    // testSuite.BeforeScenario,
                    testSuite.BeforeScenario.Select(codeblock => ScriptBlock.Create(codeblock.Code)).ToArray(),
                    null, // alternate scriptblocks
                    cmdlet,
                    testSuite.BeforeScenarioParameters);
            }
            
            // run BeforeTest scriptblocks
            if (null != testScenario) {
                cmdlet.runTwoScriptBlockCollections(
                    // 20141211
                    // testScenario.BeforeTest,
                    testScenario.BeforeTest.Select(codeblock => ScriptBlock.Create(codeblock.Code)).ToArray(),
                    null, // alternate scriptblocks
                    cmdlet,
                    testScenario.BeforeTestParameters);
            }
            
            // run TestCode scriptblocks
            cmdlet.runTwoScriptBlockCollections(
                //cmdlet.TestCode,
                // 20141211
                // testCase.TestCode,
                testCase.TestCode.Select(codeblock => ScriptBlock.Create(codeblock.Code)).ToArray(),
                null,
                cmdlet,
                cmdlet.TestCodeParameters);
            
            // run AfterTest scriptblocks
            if (null != testScenario) {
                cmdlet.runTwoScriptBlockCollections(
                    // 20141211
                    // testScenario.AfterTest,
                    testScenario.AfterTest.Select(codeblock => ScriptBlock.Create(codeblock.Code)).ToArray(),
                    null, // alternate scriptblocks
                    cmdlet,
                    testScenario.AfterTestParameters);
            }
            
            // run AfterScenario scriptblocks
            //if (null != testSuite) {
            if (null != testSuite && null != testScenario) {
                cmdlet.runTwoScriptBlockCollections(
                    // 20141211
                    // testSuite.AfterScenario,
                    testSuite.AfterScenario.Select(codeblock => ScriptBlock.Create(codeblock.Code)).ToArray(),
                    null, // alternate scriptblocks
                    cmdlet,
                    testSuite.AfterScenarioParameters);
            }
            
        }
예제 #16
0
 private ITestCase createTestCaseUnderTest(ITestSuite suite, string testCaseName)
 {
     GTestTestFactory factory = new GTestTestFactory();
     return factory.BuildTestCase(suite, testCaseName);
 }
예제 #17
0
 public void Run(ITestSuite testSuite)
 {
     QueueRun(testSuite, string.Empty);
 }
 public ITestSuite Decorate(ITestSuite suite)
 {
     TestSuite checkedSuite = new TestSuite(suite.Name);
     foreach (ITestCase testCase in suite.TestCases)
     {
         PerformanceCounterCheckerTestCase checkedTestCase = new PerformanceCounterCheckerTestCase(this,testCase);
         checkedSuite.Add(checkedTestCase);
     }
     return checkedSuite;
 }
예제 #19
0
        private void QueueExtract(ITestSuite suite)
        {
            _worker.RunWorkerAsync(new ExtractArgs() {Suite = suite});

            if(!_async)
            {
                while(_worker.IsBusy)
                {
                    System.Threading.Thread.Sleep(500);
                }
            }
        }
예제 #20
0
 void setTestSuiteStatus(ITestSuite suite)
 {
     suite.enStatus = suite.Statistics.PassedButWithBadSmell > 0 ? TestSuiteStatuses.KnownIssue :
         suite.Statistics.Failed > 0 ? TestSuiteStatuses.Failed :
         suite.Statistics.Passed > 0 ? TestSuiteStatuses.Passed : TestSuiteStatuses.NotTested;
 }
예제 #21
0
        internal static ITestScenario AddTestScenario(
            ITestSuite testSuite,
            string name,
            string id,
            string description,
            string testSuiteName,
            string testSuiteId)
        {
            var cmdlet = new AddTmxTestScenarioCommand();

            if (!string.IsNullOrEmpty(name))
                cmdlet.Name = name;
            if (!string.IsNullOrEmpty(id))
                cmdlet.Id = id;
            if (!string.IsNullOrEmpty(description))
                cmdlet.Description = description;
            if (null == testSuite) {

                if (!string.IsNullOrEmpty(testSuiteName))
                    cmdlet.TestSuiteName = testSuiteName;
                if (!string.IsNullOrEmpty(testSuiteId))
                    cmdlet.TestSuiteId = testSuiteId;
                if ((string.IsNullOrEmpty(testSuiteName)) && (string.IsNullOrEmpty(testSuiteId)))
                    cmdlet.InputObject = TestData.CurrentTestSuite;
                
            } else {

                cmdlet.InputObject = (TestSuite)testSuite;
            }
            
            var command = new TmxAddTestScenarioCommand(cmdlet);
            command.Execute();
            
            return (ITestScenario)TestData.CurrentTestScenario;
        }
예제 #22
0
 internal void SetSuiteStatus(ITestSuite testSuite, bool skipAutomatic)
 {
     var counterPassedResults = 0;
     var counterKnownIssueResults = 0;
     
     if (null != testSuite.TestScenarios && 0 < testSuite.TestScenarios.Count) {
         
         foreach (var scenario in testSuite.TestScenarios) {
             
             SetScenarioStatus(scenario, skipAutomatic);
             
             switch (scenario.enStatus) {
                 case TestStatuses.Passed:
                     counterPassedResults++;
                     if (TestStatuses.Failed != testSuite.enStatus)
                         testSuite.enStatus = TestStatuses.Passed;
                     break;
                 case TestStatuses.Failed:
                     testSuite.enStatus = TestStatuses.Failed;
                     return;
                 case TestStatuses.NotRun:
                     break;
                 case TestStatuses.KnownIssue:
                     counterKnownIssueResults++;
                     if (TestStatuses.Failed != testSuite.enStatus)
                         testSuite.enStatus = TestStatuses.Passed;
                     break;
                 default:
                     // 20130428
                     //throw new Exception("Invalid value for TestScenarioStatuses");
                     // as Not Tested
                     break;
             }
         }
         
         if (0 == counterPassedResults && 0 < counterKnownIssueResults)
             testSuite.enStatus = TestStatuses.KnownIssue;
         
         // 20150925
         // var testStatistics = new TestStatistics();
         var testStatistics = ProxyFactory.Get<TestStatistics>();
         testStatistics.RefreshSuiteStatistics(testSuite, skipAutomatic);
     }
 }
예제 #23
0
 internal static ITestCase GetTestCase(
     ITestSuite testSuite,
     string testCaseName,
     string testCaseId,
     string testScenarioName,
     string testScenarioId,
     string testSuiteName,
     string testSuiteId,
     Guid testPlatformId)
 {
     ITestCase result = null;
     
     if (null == testSuite) {
         
         testSuite =
             TestData.GetTestSuite(
                 testSuiteName,
                 testSuiteId,
                 testPlatformId);
         
     }
     
     if (null == testSuite)
         // better error description?
         return result;
     
     ITestScenario testScenario = null;
     
     if (null != testSuite)
         testScenario =
             TestData.GetTestScenario(
             testSuite,
             testScenarioName,
             testScenarioId,
             testSuiteName,
             testSuiteId,
             testPlatformId);
     
     if (null == testScenario)
         // better error description?
         return result;
     
     if (null != testScenario && 0 < testScenario.TestCases.Count)
         foreach (var testCase in testScenario.TestCases)
             if ((testCaseName == testCase.TestCaseName &&
                 testCaseId == testCase.TestCaseId) ||
                 (string.IsNullOrEmpty(testCaseName) && testCaseId == testCase.TestCaseId) ||
                 (string.IsNullOrEmpty(testCaseId) && testCaseName == testCase.TestCaseName)) {
                 
                 result = testCase;
                 break;
             }
     
     return result;
 }
예제 #24
0
        internal static ITestScenario GetTestScenario(
            ITestSuite testSuite,
            string testScenarioName,
            string testScenarioId,
            string testSuiteName,
            string testSuiteId,
            Guid testPlatformId)
        {
            TestScenario result = null;
            if (testSuite != null)
                TestData.CurrentTestSuite = testSuite;
            else if (!string.IsNullOrEmpty(testSuiteName)) {
                /*
            } else if (testSuite == null && 
                        testSuiteName != string.Empty &&
                        testSuiteName != null) {
            */
                var testSuite2 = GetTestSuite(testSuiteName, testSuiteId, testPlatformId);
                if (testSuite2 != null)
                    TestData.CurrentTestSuite = testSuite2;
                
            } else if (!string.IsNullOrEmpty(testSuiteId)) {
                /*
            } else if (testSuite == null && 
                        testSuiteId != string.Empty &&
                        testSuiteId != null) {
            */
                var testSuite3 = GetTestSuite(testSuiteName, testSuiteId, testPlatformId);
                if (testSuite3 != null)
                    TestData.CurrentTestSuite = testSuite3;
            }
            
            if (TestData.CurrentTestSuite == null)
                return result;
            
            if (!string.IsNullOrEmpty(testScenarioName)) {
                
                foreach (ITestScenario testScenario in TestData.CurrentTestSuite.TestScenarios)
                    if (testScenario.Name == testScenarioName) {
                        
                        TestData.CurrentTestScenario = testScenario;
                        return TestData.CurrentTestScenario;
                        // TODO: try this
                        // return TestData.CurrentTestScenario = testScenario;
                    }
            }
            
            if (!string.IsNullOrEmpty(testScenarioId)) {
                // foreach (ITestScenario testScenario in TestData.CurrentTestSuite.TestScenarios.Cast<ITestScenario>().Where(testScenario => testScenario.Id == testScenarioId)) {
                foreach (ITestScenario testScenario in TestData.CurrentTestSuite.TestScenarios.Where(testScenario => testScenario.Id == testScenarioId)) {
                    if (testPlatformId != testScenario.PlatformUniqueId)
                        continue;
                    if (testScenarioName != testScenario.Name && !string.IsNullOrEmpty(testScenarioName))
                        continue;
                    TestData.CurrentTestScenario = testScenario;
                    return testScenario;
                }
            }

            return result;
        }
예제 #25
0
        public XElement CreateTestResultsXElementCommon(
                ITestSuite suite,
                ITestScenario scenario,
                IOrderedEnumerable<ITestResult> testResults,
                IXMLElementsStruct xmlStruct)
        {
            var testResultsFiltered = 
                from testResult in testResults
                where testResult.SuiteId == suite.Id &&
                testResult.ScenarioId == scenario.Id &&
                testResult.Id != null &&
                testResult.Name != null &&
                testResult.PlatformUniqueId == scenario.PlatformUniqueId
                select testResult;

            if (!testResultsFiltered.Any()) {
                return null;
            }
            
            var testResultsElement =
                new XElement(xmlStruct.TestResultsNode,
                             from testResult in testResultsFiltered
                             select getTestResultsXElement(testResult, xmlStruct)
                            );

            return testResultsElement;
        }
예제 #26
0
 public GTestTestListParser(ITestSuite suite)
 {
     this._suite = suite;
 }
예제 #27
0
 private GTestTestListParser CreateParserUnderTest(ITestSuite testSuite)
 {
     return new GTestTestListParser(testSuite);
 }
예제 #28
0
 // 20140720
 // string getStatisticsStringSuite(TestSuite suite, bool skipAutomatic)
 string getStatisticsStringSuite(ITestSuite suite, bool skipAutomatic)
 {
     string result = string.Empty;
     // 20141107
     // TestData.RefreshSuiteStatistics(suite, skipAutomatic);
     var testStatistics = new TestStatistics();
     testStatistics.RefreshSuiteStatistics(suite, skipAutomatic);
     result += @"<div id=""suitestat"">";
     
     int scPassed = 0;
     int scFailed = 0;
     int scNotTested = 0;
     foreach (var tsc in suite.TestScenarios) {
         switch (tsc.enStatus) {
             case TestStatuses.Passed:
                 scPassed++;
                 break;
             case TestStatuses.Failed:
                 scFailed++;
                 break;
             case TestStatuses.NotRun:
                 scNotTested++;
                 break;
             default:
                 // 20130428
                 //throw new Exception("Invalid value for TestScenarioStatuses");
                 scNotTested++;
                 break;
         }
     }
     
     // scenarios
     result += @"Scenarios:";
     result += suite.TestScenarios.Count.ToString();
     result += "  Passed:";
     result += scPassed.ToString();
     result += "  Failed:";
     result += scFailed.ToString();
     result += "  Not tested:";
     result += scNotTested.ToString();
     result += newLineHTML;
     
     // test results
     result += @"Test cases:";
     result += suite.Statistics.All.ToString();
     result += "  Passed:";
     result += suite.Statistics.Passed.ToString();
     result += "  Failed:";
     result += suite.Statistics.Failed.ToString();
     result += "  Not tested:";
     result += suite.Statistics.NotTested.ToString();
     result += "  Time spent:";
     result += Convert.ToInt32(suite.Statistics.TimeSpent).ToString();
     result += @" seconds</div>";
     return result;
 }
예제 #29
0
        public XElement CreateScenariosXElementCommon(
                ITestSuite suite,
                IOrderedEnumerable<ITestScenario> scenarios,
                IOrderedEnumerable<ITestResult> testResults,
                IXMLElementsStruct xmlStruct)
        {
            var testScenariosFiltered = 
                from scenario in scenarios
                where scenario.SuiteId == suite.Id && scenario.PlatformUniqueId == suite.PlatformUniqueId
                select scenario;

            if (!testScenariosFiltered.Any()) {
                return null;
            }
            
            var scenariosElement = 
                 new XElement(xmlStruct.ScenariosNode,
                              from scenario in testScenariosFiltered
                              select getScenariosXElement(
                                  suite, 
                                  scenario,
                                  // 20141122
                                  // testResults.Where(testResult => testResult.SuiteId == suite.Id && testResult.ScenarioId == scenario.Id).OrderBy(testResult => testResult.Id),
                                  testResults.Where(
                                      testResult => testResult.SuiteId == suite.Id && 
                                      testResult.SuiteUniqueId == suite.UniqueId && 
                                      testResult.ScenarioId == scenario.Id && 
                                      testResult.ScenarioUniqueId == scenario.UniqueId).OrderBy(testResult => testResult.Id),
                                  xmlStruct)
                             );
            return scenariosElement;
        }
예제 #30
0
        public void RequestRun(ITestSuite suite, ITestLogger logger)
        {
            int testCount = 0;
            foreach (var testCase in suite.TestCases)
            {
                testCount += testCase.Tests.Length;
            }
            TestCount = testCount;
            TestsCompleted = 0;
            TestsFailed = 0;
            TestsIgnored = 0;
            TestsPassed = 0;

            GTestRunner runner = new GTestRunner(logger);
            runner.TestCompleted += RunnerOnTestCompleted;
            runner.RunCompleted += RunnerOnRunCompleted;
            runner.Run(suite);
        }
예제 #31
0
        XElement getScenariosXElement(
                ITestSuite suite,
                ITestScenario scenario,
                IOrderedEnumerable<ITestResult> testResults,
                IXMLElementsStruct xmlStruct)
        {
            var scenariosElement =
                new XElement(xmlStruct.ScenarioNode,
                             new XAttribute("uniqueId", scenario.UniqueId),
                             new XAttribute("id", scenario.Id),
                             new XAttribute("name", scenario.Name),
                             new XAttribute("status", scenario.Status),
                             createXattribute(xmlStruct.TimeSpentAttribute, Convert.ToInt32(suite.Statistics.TimeSpent)),
                             new XAttribute("all", scenario.Statistics.All.ToString()),
                             new XAttribute("passed", scenario.Statistics.Passed.ToString()),
                             createXattribute(xmlStruct.FailedAttribute, scenario.Statistics.Failed.ToString()),
                             new XAttribute("notTested", scenario.Statistics.NotTested.ToString()),
                             new XAttribute("knownIssue", scenario.Statistics.PassedButWithBadSmell.ToString()),
                             createXattribute("description", scenario.Description),
                             createXattribute("platformId", scenario.PlatformId),
                             createXattribute("platformUniqueId", scenario.PlatformUniqueId),
                             CreateTestResultsXElementCommon(
                                 suite,
                                 scenario,
                                 testResults,
                                 xmlStruct)
                            );

            return scenariosElement;
        }