diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingADocumentStringToAWorksheet.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingADocumentStringToAWorksheet.cs index aec8b1fbb..8ad42ae0b 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingADocumentStringToAWorksheet.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingADocumentStringToAWorksheet.cs @@ -1,7 +1,6 @@ using System; using ClosedXML.Excel; using NUnit.Framework; -using Autofac; using PicklesDoc.Pickles.DocumentationBuilders.Excel; using Should; @@ -13,7 +12,7 @@ public class WhenAddingADocumentStringToAWorksheet : BaseFixture [Test] public void ThenDocumentStringAddedSuccessfully() { - var excelDocumentStringFormatter = Container.Resolve(); + var excelDocumentStringFormatter = new ExcelDocumentStringFormatter(); string documentString = @"This is an example document string for use in testing"; diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAFeatureToAWorksheet.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAFeatureToAWorksheet.cs index f18b7fe53..3dccedf52 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAFeatureToAWorksheet.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAFeatureToAWorksheet.cs @@ -3,6 +3,7 @@ using NUnit.Framework; using Autofac; using PicklesDoc.Pickles.DocumentationBuilders.Excel; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using Should; diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAScenarioOutlineToAWorksheet.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAScenarioOutlineToAWorksheet.cs index e09836957..c0b27adb9 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAScenarioOutlineToAWorksheet.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAScenarioOutlineToAWorksheet.cs @@ -4,6 +4,7 @@ using NUnit.Framework; using Autofac; using PicklesDoc.Pickles.DocumentationBuilders.Excel; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using Should; diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAScenarioToAWorksheet.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAScenarioToAWorksheet.cs index e2d1d2180..44f49dac4 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAScenarioToAWorksheet.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAScenarioToAWorksheet.cs @@ -4,6 +4,7 @@ using NUnit.Framework; using Autofac; using PicklesDoc.Pickles.DocumentationBuilders.Excel; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using Should; diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAStepToAWorksheet.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAStepToAWorksheet.cs index 609afe6e3..2b59410d5 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAStepToAWorksheet.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingAStepToAWorksheet.cs @@ -3,6 +3,7 @@ using NUnit.Framework; using Autofac; using PicklesDoc.Pickles.DocumentationBuilders.Excel; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using Should; diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingATableOfContentsToAWorksheet.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingATableOfContentsToAWorksheet.cs index 19e9b2eea..d9818c5a4 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingATableOfContentsToAWorksheet.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingATableOfContentsToAWorksheet.cs @@ -1,7 +1,6 @@ using System; using ClosedXML.Excel; using NUnit.Framework; -using Autofac; using PicklesDoc.Pickles.DocumentationBuilders.Excel; namespace PicklesDoc.Pickles.Test.DocumentationBuilders.Excel @@ -15,7 +14,7 @@ public class WhenAddingATableOfContentsToAWorksheet : BaseFixture )] public void ThenCanAddTableOfContentsWorksheetSuccessfully() { - var excelTableOfContentsFormatter = Container.Resolve(); + var excelTableOfContentsFormatter = new ExcelTableOfContentsFormatter(); using (var workbook = new XLWorkbook()) { IXLWorksheet worksheet = workbook.AddWorksheet("SHEET1"); diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingATableToAWorksheet.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingATableToAWorksheet.cs index b4e50c25a..8e0e23373 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingATableToAWorksheet.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenAddingATableToAWorksheet.cs @@ -4,6 +4,7 @@ using NUnit.Framework; using Autofac; using PicklesDoc.Pickles.DocumentationBuilders.Excel; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using Should; diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenCreatingSheetNamesFromFeatures.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenCreatingSheetNamesFromFeatures.cs index 81af45de1..65a13ebce 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenCreatingSheetNamesFromFeatures.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/Excel/WhenCreatingSheetNamesFromFeatures.cs @@ -3,6 +3,7 @@ using NUnit.Framework; using Autofac; using PicklesDoc.Pickles.DocumentationBuilders.Excel; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using Should; diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/AutomationLayer/CurrentScenarioContext.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/AutomationLayer/CurrentScenarioContext.cs index 703efa5cd..4f4bd87d5 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/AutomationLayer/CurrentScenarioContext.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/AutomationLayer/CurrentScenarioContext.cs @@ -1,6 +1,8 @@ using System; using System.Xml.Linq; using Autofac; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using TechTalk.SpecFlow; diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/AutomationLayer/StepDefinitions.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/AutomationLayer/StepDefinitions.cs index 38cabb2c7..2bb949c8b 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/AutomationLayer/StepDefinitions.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/AutomationLayer/StepDefinitions.cs @@ -2,6 +2,7 @@ using System.Xml; using Autofac; using PicklesDoc.Pickles.DocumentationBuilders.HTML; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using Should; using TechTalk.SpecFlow; diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingFeatures.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingFeatures.cs index 256a15fa4..88865d407 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingFeatures.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingFeatures.cs @@ -4,6 +4,7 @@ using NUnit.Framework; using Autofac; using PicklesDoc.Pickles.DocumentationBuilders.HTML; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.Test.DocumentationBuilders.HTML @@ -14,9 +15,6 @@ public class WhenFormattingFeatures : BaseFixture [Test] public void ThenCanFormatDescriptionAsMarkdown() { - var configuration = Container.Resolve(); - configuration.TestResultsFiles = null; - var feature = new Feature { Name = "A feature", @@ -71,9 +69,6 @@ 2. This is the second reason" [Test] public void ThenCanFormatMarkdownTableExtensions() { - var configuration = Container.Resolve(); - configuration.TestResultsFiles = null; - var feature = new Feature { Name = "A feature", @@ -108,9 +103,6 @@ I want to see the descriptions written in markdown rendered with tables [Test] public void ThenCanFormatMarkdownTableExtensionsEvenIfTheyAreSomewhatMalstructured() { - var configuration = Container.Resolve(); - configuration.TestResultsFiles = null; - var feature = new Feature { Name = "A feature", diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingScenario.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingScenario.cs index f3e1c276a..ff47fff3c 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingScenario.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingScenario.cs @@ -4,6 +4,7 @@ using NUnit.Framework; using Autofac; using PicklesDoc.Pickles.DocumentationBuilders.HTML; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.Test.DocumentationBuilders.HTML diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingScenarioOutlines.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingScenarioOutlines.cs index 5bc1095e8..51ae687b9 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingScenarioOutlines.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingScenarioOutlines.cs @@ -3,6 +3,7 @@ using Autofac; using NUnit.Framework; using PicklesDoc.Pickles.DocumentationBuilders.HTML; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.Test.Extensions; diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingStep.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingStep.cs index 94e53e2aa..69aec76af 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingStep.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingStep.cs @@ -4,6 +4,7 @@ using NUnit.Framework; using Autofac; using PicklesDoc.Pickles.DocumentationBuilders.HTML; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.Test.DocumentationBuilders.HTML diff --git a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingTables.cs b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingTables.cs index cb54612b9..2fbf83cb9 100644 --- a/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingTables.cs +++ b/src/Pickles/Pickles.Test/DocumentationBuilders/HTML/WhenFormattingTables.cs @@ -4,6 +4,7 @@ using Autofac; using NUnit.Framework; using PicklesDoc.Pickles.DocumentationBuilders.HTML; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using Should; diff --git a/src/Pickles/Pickles.Test/Formatters/HtmlContentFormatterTests.cs b/src/Pickles/Pickles.Test/Formatters/HtmlContentFormatterTests.cs index bb77f1991..eb955012b 100644 --- a/src/Pickles/Pickles.Test/Formatters/HtmlContentFormatterTests.cs +++ b/src/Pickles/Pickles.Test/Formatters/HtmlContentFormatterTests.cs @@ -1,10 +1,10 @@ using System; -using System.Xml.Linq; -using Autofac; +//using Autofac; using Moq; using NUnit.Framework; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.DocumentationBuilders.HTML; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.Test.Formatters @@ -29,8 +29,7 @@ public void Constructor_NullHtmlIndexFormatter_ThrowsArgumentNullException() var exception = Assert.Throws( () => - new HtmlContentFormatter( - Container.Resolve(), + new HtmlContentFormatter(new Mock().Object, null)); Assert.AreEqual("htmlIndexFormatter", exception.ParamName); @@ -40,7 +39,7 @@ public void Constructor_NullHtmlIndexFormatter_ThrowsArgumentNullException() public void Format_ContentIsFeatureNode_UsesHtmlFeatureFormatterWithCorrectArgument() { var fakeHtmlFeatureFormatter = new Mock(); - var formatter = new HtmlContentFormatter(fakeHtmlFeatureFormatter.Object, Container.Resolve()); + var formatter = new HtmlContentFormatter(fakeHtmlFeatureFormatter.Object, new HtmlIndexFormatter()); var featureNode = new FeatureNode( FileSystem.FileInfo.FromFileName(@"c:\temp\test.feature"), diff --git a/src/Pickles/Pickles.Test/Formatters/HtmlScenarioFormatterTests.cs b/src/Pickles/Pickles.Test/Formatters/HtmlScenarioFormatterTests.cs index 14faa1860..b66137616 100644 --- a/src/Pickles/Pickles.Test/Formatters/HtmlScenarioFormatterTests.cs +++ b/src/Pickles/Pickles.Test/Formatters/HtmlScenarioFormatterTests.cs @@ -4,6 +4,7 @@ using NUnit.Framework; using Autofac; using PicklesDoc.Pickles.DocumentationBuilders.HTML; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.Test.Formatters diff --git a/src/Pickles/Pickles.Test/Formatters/HtmlScenarioOutlineFormatterTests.cs b/src/Pickles/Pickles.Test/Formatters/HtmlScenarioOutlineFormatterTests.cs index 027dfbb39..f094b9a7d 100644 --- a/src/Pickles/Pickles.Test/Formatters/HtmlScenarioOutlineFormatterTests.cs +++ b/src/Pickles/Pickles.Test/Formatters/HtmlScenarioOutlineFormatterTests.cs @@ -1,10 +1,14 @@ using System; using System.Collections.Generic; using System.Xml.Linq; + +using Moq; + using NUnit.Framework; using Autofac; using PicklesDoc.Pickles.DocumentationBuilders.HTML; -using PicklesDoc.Pickles.Parser; +using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.TestFrameworks; namespace PicklesDoc.Pickles.Test.Formatters { @@ -16,10 +20,16 @@ public class HtmlScenarioOutlineFormatterTests : BaseFixture [SetUp] public void Setup() { - this.formatter = new HtmlScenarioOutlineFormatter(Container.Resolve(), - Container.Resolve(), - Container.Resolve(), - Container.Resolve()); + var fakeTestResults = new Mock(); + fakeTestResults.Setup(ftr => ftr.SupportsExampleResults).Returns(false); + + + this.formatter = new HtmlScenarioOutlineFormatter( + Container.Resolve(), + Container.Resolve(), + Container.Resolve(), + Container.Resolve(), + fakeTestResults.Object); } #endregion @@ -28,8 +38,8 @@ public void Setup() private static ScenarioOutline BuildMinimalScenarioOutline() { - var examples = new List(); - examples.Add(new Example + var examples = new List(); + examples.Add(new Example { Description = "My Example Description", TableArgument = new Table diff --git a/src/Pickles/Pickles.Test/Formatters/JSON/when_creating_a_feature_with_meta_info.cs b/src/Pickles/Pickles.Test/Formatters/JSON/when_creating_a_feature_with_meta_info.cs index b9d91f8ff..1e77aa027 100644 --- a/src/Pickles/Pickles.Test/Formatters/JSON/when_creating_a_feature_with_meta_info.cs +++ b/src/Pickles/Pickles.Test/Formatters/JSON/when_creating_a_feature_with_meta_info.cs @@ -3,6 +3,7 @@ using NUnit.Framework; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.DocumentationBuilders.JSON; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using Should.Fluent; diff --git a/src/Pickles/Pickles.Test/ParserTests.cs b/src/Pickles/Pickles.Test/ParserTests.cs index 1785c6927..ca7e8fb43 100644 --- a/src/Pickles/Pickles.Test/ParserTests.cs +++ b/src/Pickles/Pickles.Test/ParserTests.cs @@ -3,6 +3,7 @@ using NUnit.Framework; using Autofac; using PicklesDoc.Pickles.DocumentationBuilders.HTML; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.Test diff --git a/src/Pickles/Pickles.Test/WhenDeterminingTheSignatureOfAnNUnitExampleRow.cs b/src/Pickles/Pickles.Test/WhenDeterminingTheSignatureOfAnNUnitExampleRow.cs index e04893cfa..1b4571311 100644 --- a/src/Pickles/Pickles.Test/WhenDeterminingTheSignatureOfAnNUnitExampleRow.cs +++ b/src/Pickles/Pickles.Test/WhenDeterminingTheSignatureOfAnNUnitExampleRow.cs @@ -2,6 +2,8 @@ using System.Text.RegularExpressions; using NUnit.Framework; using Autofac; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; using Should; diff --git a/src/Pickles/Pickles.Test/WhenDeterminingTheSignatureOfAnXUnitExampleRow.cs b/src/Pickles/Pickles.Test/WhenDeterminingTheSignatureOfAnXUnitExampleRow.cs index 160ee3cbf..3dfb1511f 100644 --- a/src/Pickles/Pickles.Test/WhenDeterminingTheSignatureOfAnXUnitExampleRow.cs +++ b/src/Pickles/Pickles.Test/WhenDeterminingTheSignatureOfAnXUnitExampleRow.cs @@ -2,6 +2,8 @@ using System.Text.RegularExpressions; using NUnit.Framework; using Autofac; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; using Should; diff --git a/src/Pickles/Pickles.Test/WhenGeneratingPathsFromFeaturesToDitaFiles.cs b/src/Pickles/Pickles.Test/WhenGeneratingPathsFromFeaturesToDitaFiles.cs index 3f82e8b68..18a5e38de 100644 --- a/src/Pickles/Pickles.Test/WhenGeneratingPathsFromFeaturesToDitaFiles.cs +++ b/src/Pickles/Pickles.Test/WhenGeneratingPathsFromFeaturesToDitaFiles.cs @@ -3,6 +3,7 @@ using NUnit.Framework; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.DocumentationBuilders.DITA; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using Should; diff --git a/src/Pickles/Pickles.Test/WhenParsingCucumberJsonResultsFile.cs b/src/Pickles/Pickles.Test/WhenParsingCucumberJsonResultsFile.cs index ec7d2fa28..1bed9db4c 100644 --- a/src/Pickles/Pickles.Test/WhenParsingCucumberJsonResultsFile.cs +++ b/src/Pickles/Pickles.Test/WhenParsingCucumberJsonResultsFile.cs @@ -1,5 +1,7 @@ using System; using NUnit.Framework; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; using Should; diff --git a/src/Pickles/Pickles.Test/WhenParsingFeatureFiles.cs b/src/Pickles/Pickles.Test/WhenParsingFeatureFiles.cs index e4198209d..0b2261f87 100644 --- a/src/Pickles/Pickles.Test/WhenParsingFeatureFiles.cs +++ b/src/Pickles/Pickles.Test/WhenParsingFeatureFiles.cs @@ -1,6 +1,8 @@ using System.Linq; using NUnit.Framework; using Autofac; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using System; diff --git a/src/Pickles/Pickles.Test/WhenParsingLocalizedFeatureFiles.cs b/src/Pickles/Pickles.Test/WhenParsingLocalizedFeatureFiles.cs index 1d02a8313..a3ed7b7ae 100644 --- a/src/Pickles/Pickles.Test/WhenParsingLocalizedFeatureFiles.cs +++ b/src/Pickles/Pickles.Test/WhenParsingLocalizedFeatureFiles.cs @@ -1,6 +1,8 @@ using System; using System.Linq; using NUnit.Framework; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using Should; diff --git a/src/Pickles/Pickles.Test/WhenParsingMsTestResultsFile.cs b/src/Pickles/Pickles.Test/WhenParsingMsTestResultsFile.cs index c4d915b33..d34d4e2f6 100644 --- a/src/Pickles/Pickles.Test/WhenParsingMsTestResultsFile.cs +++ b/src/Pickles/Pickles.Test/WhenParsingMsTestResultsFile.cs @@ -1,5 +1,7 @@ using System; using NUnit.Framework; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; using Should; diff --git a/src/Pickles/Pickles.Test/WhenParsingMultipleMsTestTestResultsFiles.cs b/src/Pickles/Pickles.Test/WhenParsingMultipleMsTestTestResultsFiles.cs index 5b60aac44..700e5e166 100644 --- a/src/Pickles/Pickles.Test/WhenParsingMultipleMsTestTestResultsFiles.cs +++ b/src/Pickles/Pickles.Test/WhenParsingMultipleMsTestTestResultsFiles.cs @@ -1,5 +1,7 @@ using System; using NUnit.Framework; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; using Should; diff --git a/src/Pickles/Pickles.Test/WhenParsingMultipleTestResultsTests.cs b/src/Pickles/Pickles.Test/WhenParsingMultipleTestResultsTests.cs index 1bac70cbc..4aa1b905b 100644 --- a/src/Pickles/Pickles.Test/WhenParsingMultipleTestResultsTests.cs +++ b/src/Pickles/Pickles.Test/WhenParsingMultipleTestResultsTests.cs @@ -18,6 +18,7 @@ // // -------------------------------------------------------------------------------------------------------------------- +using System; using System.Collections.Generic; using System.IO.Abstractions; @@ -25,6 +26,7 @@ using NUnit.Framework; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; @@ -58,14 +60,19 @@ private static MultipleTestResults CreateMultipleTestResults(ITestResults testRe private class TestableMultipleTestResults : MultipleTestResults { public TestableMultipleTestResults(IEnumerable testResults) - : base(testResults) + : base(false, testResults) { } + public override TestResult GetExampleResult(ScenarioOutline scenario, string[] exampleValues) + { + throw new NotSupportedException(); + } + protected override ITestResults ConstructSingleTestResult(FileInfoBase fileInfo) { // not needed since we use the other constructor - throw new System.NotSupportedException(); + throw new NotSupportedException(); } } diff --git a/src/Pickles/Pickles.Test/WhenParsingNUnitResultsFile.cs b/src/Pickles/Pickles.Test/WhenParsingNUnitResultsFile.cs index 7303646a2..42d57beb6 100644 --- a/src/Pickles/Pickles.Test/WhenParsingNUnitResultsFile.cs +++ b/src/Pickles/Pickles.Test/WhenParsingNUnitResultsFile.cs @@ -1,7 +1,8 @@ using System; using NUnit.Framework; -using PicklesDoc.Pickles.Parser; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.TestFrameworks; using Should; @@ -144,17 +145,17 @@ public void ThenCanReadFailedFeatureResultSuccessfully() private Feature FailingFeature() { - return new Feature() {Name = "Failing"}; + return new Feature {Name = "Failing"}; } private Feature InconclusiveFeature() { - return new Feature() { Name = "Inconclusive" }; + return new Feature { Name = "Inconclusive" }; } private Feature PassingFeature() { - return new Feature() { Name = "Passing" }; + return new Feature { Name = "Passing" }; } [Test] @@ -183,5 +184,106 @@ public void ThenCanReadNotFoundFeatureCorrectly() result.WasExecuted.ShouldBeFalse(); result.WasSuccessful.ShouldBeFalse(); } + + [Test] + public void ThenCanReadIndividualResultsFromScenarioOutline_AllPass_ShouldBeTestResultPassed() + { + var results = ParseResultsFile(); + results.SetExampleSignatureBuilder(new NUnitExampleSignatureBuilder()); + + var feature = new Feature { Name = "Scenario Outlines" }; + + var scenarioOutline = new ScenarioOutline { Name = "This is a scenario outline where all scenarios pass", Feature = feature }; + + TestResult exampleResultOutline = results.GetScenarioOutlineResult(scenarioOutline); + exampleResultOutline.ShouldEqual(TestResult.Passed); + + TestResult exampleResult1 = results.GetExampleResult(scenarioOutline, new[] { "pass_1" }); + exampleResult1.ShouldEqual(TestResult.Passed); + + TestResult exampleResult2 = results.GetExampleResult(scenarioOutline, new[] { "pass_2" }); + exampleResult2.ShouldEqual(TestResult.Passed); + + TestResult exampleResult3 = results.GetExampleResult(scenarioOutline, new[] { "pass_3" }); + exampleResult3.ShouldEqual(TestResult.Passed); + } + + [Test] + public void ThenCanReadIndividualResultsFromScenarioOutline_OneInconclusive_ShouldBeTestResultInconclusive() + { + var results = ParseResultsFile(); + results.SetExampleSignatureBuilder(new NUnitExampleSignatureBuilder()); + + var feature = new Feature { Name = "Scenario Outlines" }; + + var scenarioOutline = new ScenarioOutline { Name = "This is a scenario outline where one scenario is inconclusive", Feature = feature }; + + TestResult exampleResultOutline = results.GetScenarioOutlineResult(scenarioOutline); + exampleResultOutline.ShouldEqual(TestResult.Inconclusive); + + TestResult exampleResult1 = results.GetExampleResult(scenarioOutline, new[] { "pass_1" }); + exampleResult1.ShouldEqual(TestResult.Passed); + + TestResult exampleResult2 = results.GetExampleResult(scenarioOutline, new[] { "pass_2" }); + exampleResult2.ShouldEqual(TestResult.Passed); + + TestResult exampleResult3 = results.GetExampleResult(scenarioOutline, new[] { "inconclusive_1" }); + exampleResult3.ShouldEqual(TestResult.Inconclusive); + } + + [Test] + public void ThenCanReadIndividualResultsFromScenarioOutline_OneFailed_ShouldBeTestResultFailed() + { + var results = ParseResultsFile(); + results.SetExampleSignatureBuilder(new NUnitExampleSignatureBuilder()); + + var feature = new Feature { Name = "Scenario Outlines" }; + + var scenarioOutline = new ScenarioOutline { Name = "This is a scenario outline where one scenario fails", Feature = feature }; + + TestResult exampleResultOutline = results.GetScenarioOutlineResult(scenarioOutline); + exampleResultOutline.ShouldEqual(TestResult.Failed); + + TestResult exampleResult1 = results.GetExampleResult(scenarioOutline, new[] { "pass_1" }); + exampleResult1.ShouldEqual(TestResult.Passed); + + TestResult exampleResult2 = results.GetExampleResult(scenarioOutline, new[] { "pass_2" }); + exampleResult2.ShouldEqual(TestResult.Passed); + + TestResult exampleResult3 = results.GetExampleResult(scenarioOutline, new[] { "fail_1" }); + exampleResult3.ShouldEqual(TestResult.Failed); + } + + [Test] + public void ThenCanReadIndividualResultsFromScenarioOutline_MultipleExampleSections_ShouldBeTestResultFailed() + { + var results = ParseResultsFile(); + results.SetExampleSignatureBuilder(new NUnitExampleSignatureBuilder()); + + var feature = new Feature { Name = "Scenario Outlines" }; + + var scenarioOutline = new ScenarioOutline { Name = "And we can go totally bonkers with multiple example sections.", Feature = feature }; + + TestResult exampleResultOutline = results.GetScenarioOutlineResult(scenarioOutline); + exampleResultOutline.ShouldEqual(TestResult.Failed); + + TestResult exampleResult1 = results.GetExampleResult(scenarioOutline, new[] { "pass_1" }); + exampleResult1.ShouldEqual(TestResult.Passed); + + TestResult exampleResult2 = results.GetExampleResult(scenarioOutline, new[] { "pass_2" }); + exampleResult2.ShouldEqual(TestResult.Passed); + + TestResult exampleResult3 = results.GetExampleResult(scenarioOutline, new[] { "inconclusive_1" }); + exampleResult3.ShouldEqual(TestResult.Inconclusive); + + TestResult exampleResult4 = results.GetExampleResult(scenarioOutline, new[] { "inconclusive_2" }); + exampleResult4.ShouldEqual(TestResult.Inconclusive); + + TestResult exampleResult5 = results.GetExampleResult(scenarioOutline, new[] { "fail_1" }); + exampleResult5.ShouldEqual(TestResult.Failed); + + TestResult exampleResult6 = results.GetExampleResult(scenarioOutline, new[] { "fail_2" }); + exampleResult6.ShouldEqual(TestResult.Failed); + } } } \ No newline at end of file diff --git a/src/Pickles/Pickles.Test/WhenParsingSpecRunTestResultsFile.cs b/src/Pickles/Pickles.Test/WhenParsingSpecRunTestResultsFile.cs index bc6b921d5..82b97eb89 100644 --- a/src/Pickles/Pickles.Test/WhenParsingSpecRunTestResultsFile.cs +++ b/src/Pickles/Pickles.Test/WhenParsingSpecRunTestResultsFile.cs @@ -1,5 +1,7 @@ using System; using NUnit.Framework; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; using Should; diff --git a/src/Pickles/Pickles.Test/WhenParsingxUnitResultsFile.cs b/src/Pickles/Pickles.Test/WhenParsingxUnitResultsFile.cs index bd99df1be..41cce06d5 100644 --- a/src/Pickles/Pickles.Test/WhenParsingxUnitResultsFile.cs +++ b/src/Pickles/Pickles.Test/WhenParsingxUnitResultsFile.cs @@ -1,6 +1,8 @@ using System; using NUnit.Framework; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; using Should; diff --git a/src/Pickles/Pickles.Test/WhenResolvingTestResults.cs b/src/Pickles/Pickles.Test/WhenResolvingTestResults.cs index be7f975b4..70753c973 100644 --- a/src/Pickles/Pickles.Test/WhenResolvingTestResults.cs +++ b/src/Pickles/Pickles.Test/WhenResolvingTestResults.cs @@ -1,19 +1,16 @@ using System; -using System.IO.Abstractions.TestingHelpers; -using System.Reflection; using NUnit.Framework; using Autofac; using PicklesDoc.Pickles.TestFrameworks; using Should; -using StreamReader = System.IO.StreamReader; -using StreamWriter = System.IO.StreamWriter; - namespace PicklesDoc.Pickles.Test { [TestFixture] public class WhenResolvingTestResults : BaseFixture { + private const string TestResultsResourcePrefix = "PicklesDoc.Pickles.Test."; + [Test] public void ThenCanResolveAsSingletonWhenNoTestResultsSelected() { @@ -28,20 +25,13 @@ public void ThenCanResolveAsSingletonWhenNoTestResultsSelected() } [Test] - public void ThenCanResolveAsSingletonWhenTestResultsAreMSTest() + public void ThenCanResolveAsSingletonWhenTestResultsAreMsTest() { - const string resultsFilename = "results-example-mstest.trx"; - using ( - var input = - new StreamReader( - Assembly.GetExecutingAssembly().GetManifestResourceStream("PicklesDoc.Pickles.Test." + resultsFilename))) - { - FileSystem.AddFile(resultsFilename, new MockFileData(input.ReadToEnd())); - } + FileSystem.AddFile("results-example-mstest.trx", RetrieveContentOfFileFromResources(TestResultsResourcePrefix + "results-example-mstest.trx")); var configuration = Container.Resolve(); configuration.TestResultsFormat = TestResultsFormat.MsTest; - configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName(resultsFilename) }; + configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName("results-example-mstest.trx") }; var item1 = Container.Resolve(); var item2 = Container.Resolve(); @@ -56,18 +46,11 @@ public void ThenCanResolveAsSingletonWhenTestResultsAreMSTest() [Test] public void ThenCanResolveAsSingletonWhenTestResultsAreNUnit() { - const string resultsFilename = "results-example-nunit.xml"; - using ( - var input = - new StreamReader( - Assembly.GetExecutingAssembly().GetManifestResourceStream("PicklesDoc.Pickles.Test." + resultsFilename))) - { - FileSystem.AddFile(resultsFilename, new MockFileData(input.ReadToEnd())); - } + FileSystem.AddFile("results-example-nunit.xml", RetrieveContentOfFileFromResources(TestResultsResourcePrefix + "results-example-nunit.xml")); var configuration = Container.Resolve(); configuration.TestResultsFormat = TestResultsFormat.NUnit; - configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName(resultsFilename) }; + configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName("results-example-nunit.xml") }; var item1 = Container.Resolve(); var item2 = Container.Resolve(); @@ -82,79 +65,58 @@ public void ThenCanResolveAsSingletonWhenTestResultsAreNUnit() [Test] public void ThenCanResolveAsSingletonWhenTestResultsArexUnit() { - const string resultsFilename = "results-example-xunit.xml"; - using ( - var input = - new StreamReader( - Assembly.GetExecutingAssembly().GetManifestResourceStream("PicklesDoc.Pickles.Test." + resultsFilename))) - { - FileSystem.AddFile(resultsFilename, new MockFileData(input.ReadToEnd())); - } - - var configuration = Container.Resolve(); - configuration.TestResultsFormat = TestResultsFormat.xUnit; - configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName(resultsFilename) }; - - var item1 = Container.Resolve(); - var item2 = Container.Resolve(); - - item1.ShouldNotBeNull(); - item1.ShouldBeType(); - item2.ShouldNotBeNull(); - item2.ShouldBeType(); - item1.ShouldBeSameAs(item2); + FileSystem.AddFile("results-example-xunit.xml", RetrieveContentOfFileFromResources(TestResultsResourcePrefix + "results-example-xunit.xml")); + + var configuration = Container.Resolve(); + configuration.TestResultsFormat = TestResultsFormat.xUnit; + configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName("results-example-xunit.xml") }; + + var item1 = Container.Resolve(); + var item2 = Container.Resolve(); + + item1.ShouldNotBeNull(); + item1.ShouldBeType(); + item2.ShouldNotBeNull(); + item2.ShouldBeType(); + item1.ShouldBeSameAs(item2); } [Test] public void ThenCanResolveAsSingletonWhenTestResultsAreCucumberJson() { - const string resultsFilename = "results-example-json.json"; - using ( - var input = - new StreamReader( - Assembly.GetExecutingAssembly().GetManifestResourceStream("PicklesDoc.Pickles.Test." + resultsFilename))) - { - FileSystem.AddFile(resultsFilename, new MockFileData(input.ReadToEnd())); - } - - var configuration = Container.Resolve(); - configuration.TestResultsFormat = TestResultsFormat.CucumberJson; - configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName(resultsFilename) }; - - var item1 = Container.Resolve(); - var item2 = Container.Resolve(); - - item1.ShouldNotBeNull(); - item1.ShouldBeType(); - item2.ShouldNotBeNull(); - item2.ShouldBeType(); - item1.ShouldBeSameAs(item2); + FileSystem.AddFile("results-example-json.json", RetrieveContentOfFileFromResources(TestResultsResourcePrefix + "results-example-json.json")); + + var configuration = Container.Resolve(); + configuration.TestResultsFormat = TestResultsFormat.CucumberJson; + configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName("results-example-json.json") }; + + var item1 = Container.Resolve(); + var item2 = Container.Resolve(); + + item1.ShouldNotBeNull(); + item1.ShouldBeType(); + item2.ShouldNotBeNull(); + item2.ShouldBeType(); + item1.ShouldBeSameAs(item2); } [Test] public void ThenCanResolveAsSingletonWhenTestResultsAreSpecrun() { - const string resultsFilename = "results-example-specrun.html"; - using ( - var input = - new StreamReader( - Assembly.GetExecutingAssembly().GetManifestResourceStream("PicklesDoc.Pickles.Test." + resultsFilename))) - { - FileSystem.AddFile(resultsFilename, new MockFileData(input.ReadToEnd())); - } - - var configuration = Container.Resolve(); - configuration.TestResultsFormat = TestResultsFormat.SpecRun; - configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName(resultsFilename) }; - - var item1 = Container.Resolve(); - var item2 = Container.Resolve(); - - item1.ShouldNotBeNull(); - item1.ShouldBeType(); - item2.ShouldNotBeNull(); - item2.ShouldBeType(); - item1.ShouldBeSameAs(item2); + FileSystem.AddFile("results-example-specrun.html", RetrieveContentOfFileFromResources(TestResultsResourcePrefix + "results-example-specrun.html")); + + var configuration = Container.Resolve(); + configuration.TestResultsFormat = TestResultsFormat.SpecRun; + configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName("results-example-specrun.html") }; + + var item1 = Container.Resolve(); + var item2 = Container.Resolve(); + + item1.ShouldNotBeNull(); + item1.ShouldBeType(); + item2.ShouldNotBeNull(); + item2.ShouldBeType(); + item1.ShouldBeSameAs(item2); } [Test] @@ -168,17 +130,13 @@ public void ThenCanResolveWhenNoTestResultsSelected() [Test] - public void ThenCanResolveWhenTestResultsAreMSTest() + public void ThenCanResolveWhenTestResultsAreMsTest() { - const string resultsFilename = "results-example-mstest.trx"; - using (var input = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("PicklesDoc.Pickles.Test." + resultsFilename))) - { - FileSystem.AddFile(resultsFilename, new MockFileData(input.ReadToEnd())); - } + FileSystem.AddFile("results-example-mstest.trx", RetrieveContentOfFileFromResources(TestResultsResourcePrefix + "results-example-mstest.trx")); var configuration = Container.Resolve(); configuration.TestResultsFormat = TestResultsFormat.MsTest; - configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName(resultsFilename) }; + configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName("results-example-mstest.trx") }; var item = Container.Resolve(); @@ -189,15 +147,11 @@ public void ThenCanResolveWhenTestResultsAreMSTest() [Test] public void ThenCanResolveWhenTestResultsAreNUnit() { - const string resultsFilename = "results-example-nunit.xml"; - using (var input = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("PicklesDoc.Pickles.Test." + resultsFilename))) - { - FileSystem.AddFile(resultsFilename, new MockFileData(input.ReadToEnd())); - } + FileSystem.AddFile("results-example-nunit.xml", RetrieveContentOfFileFromResources(TestResultsResourcePrefix + "results-example-nunit.xml")); var configuration = Container.Resolve(); configuration.TestResultsFormat = TestResultsFormat.NUnit; - configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName(resultsFilename) }; + configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName("results-example-nunit.xml") }; var item = Container.Resolve(); @@ -208,58 +162,46 @@ public void ThenCanResolveWhenTestResultsAreNUnit() [Test] public void ThenCanResolveWhenTestResultsArexUnit() { - const string resultsFilename = "results-example-xunit.xml"; - using (var input = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("PicklesDoc.Pickles.Test." + resultsFilename))) - { - FileSystem.AddFile(resultsFilename, new MockFileData(input.ReadToEnd())); - } + FileSystem.AddFile("results-example-xunit.xml", RetrieveContentOfFileFromResources(TestResultsResourcePrefix + "results-example-xunit.xml")); - var configuration = Container.Resolve(); - configuration.TestResultsFormat = TestResultsFormat.xUnit; - configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName(resultsFilename) }; + var configuration = Container.Resolve(); + configuration.TestResultsFormat = TestResultsFormat.xUnit; + configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName("results-example-xunit.xml") }; - var item = Container.Resolve(); + var item = Container.Resolve(); - Assert.NotNull(item); - Assert.IsInstanceOf(item); + Assert.NotNull(item); + Assert.IsInstanceOf(item); } [Test] public void ThenCanResolveWhenTestResultsAreCucumberJson() { - const string resultsFilename = "results-example-json.json"; - using (var input = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("PicklesDoc.Pickles.Test." + resultsFilename))) - { - FileSystem.AddFile(resultsFilename, new MockFileData(input.ReadToEnd())); - } + FileSystem.AddFile("results-example-json.json", RetrieveContentOfFileFromResources(TestResultsResourcePrefix + "results-example-json.json")); - var configuration = Container.Resolve(); - configuration.TestResultsFormat = TestResultsFormat.CucumberJson; - configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName(resultsFilename) }; + var configuration = Container.Resolve(); + configuration.TestResultsFormat = TestResultsFormat.CucumberJson; + configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName("results-example-json.json") }; - var item = Container.Resolve(); + var item = Container.Resolve(); - Assert.NotNull(item); - Assert.IsInstanceOf(item); + Assert.NotNull(item); + Assert.IsInstanceOf(item); } [Test] public void ThenCanResolveWhenTestResultsAreSpecrun() { - const string resultsFilename = "results-example-specrun.html"; - using (var input = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("PicklesDoc.Pickles.Test." + resultsFilename))) - { - FileSystem.AddFile(resultsFilename, new MockFileData(input.ReadToEnd())); - } + FileSystem.AddFile("results-example-specrun.html", RetrieveContentOfFileFromResources(TestResultsResourcePrefix + "results-example-specrun.html")); - var configuration = Container.Resolve(); - configuration.TestResultsFormat = TestResultsFormat.SpecRun; - configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName(resultsFilename) }; + var configuration = Container.Resolve(); + configuration.TestResultsFormat = TestResultsFormat.SpecRun; + configuration.TestResultsFiles = new[] { FileSystem.FileInfo.FromFileName("results-example-specrun.html") }; - var item = Container.Resolve(); + var item = Container.Resolve(); - Assert.NotNull(item); - Assert.IsInstanceOf(item); + Assert.NotNull(item); + Assert.IsInstanceOf(item); } } } \ No newline at end of file diff --git a/src/Pickles/Pickles.Test/WhenWorkingWithHtmlResources.cs b/src/Pickles/Pickles.Test/WhenWorkingWithHtmlResources.cs index 082aaeff6..998739b10 100644 --- a/src/Pickles/Pickles.Test/WhenWorkingWithHtmlResources.cs +++ b/src/Pickles/Pickles.Test/WhenWorkingWithHtmlResources.cs @@ -1,7 +1,6 @@ using System; using System.Linq; using NUnit.Framework; -using Autofac; using PicklesDoc.Pickles.DocumentationBuilders.HTML; using Should; @@ -13,10 +12,8 @@ public class WhenWorkingWithHtmlResources : BaseFixture [Test] public void ThenCanDetectAllImagesSuccessfully() { - var configuration = Container.Resolve(); - configuration.OutputFolder = configuration.OutputFolder = FileSystem.DirectoryInfo.FromDirectoryName(@"c:\"); + var htmlResources = this.CreateHtmlResourceSet(); - var htmlResources = Container.Resolve(); HtmlResource[] images = htmlResources.Images.ToArray(); images.Length.ShouldEqual(3); @@ -25,13 +22,18 @@ public void ThenCanDetectAllImagesSuccessfully() images.Any(image => image.File == "inconclusive.png").ShouldBeTrue(); } + private HtmlResourceSet CreateHtmlResourceSet() + { + var configuration = new Configuration { OutputFolder = FileSystem.DirectoryInfo.FromDirectoryName(@"c:\") }; + var htmlResources = new HtmlResourceSet(configuration, FileSystem); + return htmlResources; + } + [Test] public void ThenCanDetectAllResourcesSuccessfully() { - var configuration = Container.Resolve(); - configuration.OutputFolder = configuration.OutputFolder = FileSystem.DirectoryInfo.FromDirectoryName(@"c:\"); - - var htmlResources = Container.Resolve(); + var htmlResources = this.CreateHtmlResourceSet(); + HtmlResource[] resources = htmlResources.All.ToArray(); resources.Length.ShouldEqual(9); @@ -49,10 +51,8 @@ public void ThenCanDetectAllResourcesSuccessfully() [Test] public void ThenCanDetectAllScriptsSuccessfully() { - var configuration = Container.Resolve(); - configuration.OutputFolder = configuration.OutputFolder = FileSystem.DirectoryInfo.FromDirectoryName(@"c:\"); + var htmlResources = this.CreateHtmlResourceSet(); - var htmlResources = Container.Resolve(); HtmlResource[] scripts = htmlResources.Scripts.ToArray(); scripts.Length.ShouldEqual(2); @@ -63,10 +63,8 @@ public void ThenCanDetectAllScriptsSuccessfully() [Test] public void ThenCanDetectAllStylesheetsSuccessfully() { - var configuration = Container.Resolve(); - configuration.OutputFolder = configuration.OutputFolder = FileSystem.DirectoryInfo.FromDirectoryName(@"c:\"); + var htmlResources = this.CreateHtmlResourceSet(); - var htmlResources = Container.Resolve(); HtmlResource[] stylesheets = htmlResources.Stylesheets.ToArray(); stylesheets.Length.ShouldEqual(6); diff --git a/src/Pickles/Pickles.Test/results-example-mstest.trx b/src/Pickles/Pickles.Test/results-example-mstest.trx index aff56882b..369ef8de2 100644 --- a/src/Pickles/Pickles.Test/results-example-mstest.trx +++ b/src/Pickles/Pickles.Test/results-example-mstest.trx @@ -1,179 +1,264 @@  - - - + + + These are default test settings for a local test run. + + - + - + - - Not automated scenario 3 - + + This is a scenario outline where all scenarios pass + FeatureTitle - Not Automated At All + Scenario Outlines + + + VariantName + pass_3 + + + Parameter:result + pass_3 - + - - Failing Feature Failing Scenario - + + This is a scenario outline where all scenarios pass + FeatureTitle - Failing + Scenario Outlines + + + VariantName + pass_2 + + + Parameter:result + pass_2 - + - - Not automated scenario 2 - + + And we can go totally bonkers with multiple example sections. + FeatureTitle - Not Automated At All + Scenario Outlines + + + VariantName + fail_2 + + + Parameter:result + fail_2 - + - - Inconclusive Feature Passing Scenario - + + Not automated scenario 3 + FeatureTitle - Inconclusive + Not Automated At All - + - - Add two numbers - - - - + + Failing Feature Inconclusive Scenario + FeatureTitle - Addition + Failing - + Inconclusive Feature Inconclusive Scenario - + FeatureTitle Inconclusive - + - - Fail to add two numbers - - - - + + Failing Feature Passing Scenario + FeatureTitle - Addition + Failing - + - - Not automated scenario 1 - + + This is a scenario outline where one scenario fails + FeatureTitle - Not Automated At All + Scenario Outlines + + + VariantName + pass_2 + + + Parameter:result + pass_2 - + - + + And we can go totally bonkers with multiple example sections. + + + + FeatureTitle + Scenario Outlines + + + VariantName + fail_1 + + + Parameter:result + fail_1 + + + + + Adding several numbers - + - Parameter:third number - 90 + Parameter:first number + 60 VariantName - 40 + 60 + + + Parameter:third number + 130 Parameter:second number - 50 + 70 FeatureTitle Addition - Parameter:first number - 40 + Parameter:result + 260 + + + + + + And we can go totally bonkers with multiple example sections. + + + + FeatureTitle + Scenario Outlines + + + VariantName + pass_2 Parameter:result - 180 + pass_2 - + - - Failing Feature Inconclusive Scenario - + + Failing Feature Failing Scenario + FeatureTitle Failing - + - + + This is a scenario outline where one scenario is inconclusive + + + + FeatureTitle + Scenario Outlines + + + VariantName + pass_1 + + + Parameter:result + pass_1 + + + + + Adding several numbers - + Parameter:first number - 60 + 40 VariantName - 60 + 40 Parameter:third number - 130 + 90 Parameter:second number - 70 + 50 FeatureTitle @@ -181,43 +266,245 @@ Parameter:result - 260 + 180 - + - - Not automated adding two numbers - + + This is a scenario outline where one scenario is inconclusive + + + + FeatureTitle + Scenario Outlines + + + VariantName + inconclusive_1 + + + Parameter:result + inconclusive_1 + + + + + + Inconclusive Feature Passing Scenario + + + + FeatureTitle + Inconclusive + + + + + + Add two numbers + + + + FeatureTitle Addition - + + + + This is a scenario outline where one scenario fails + + + + FeatureTitle + Scenario Outlines + + + VariantName + fail_1 + + + Parameter:result + fail_1 + + + + + + And we can go totally bonkers with multiple example sections. + + + + FeatureTitle + Scenario Outlines + + + VariantName + inconclusive_2 + + + Parameter:result + inconclusive_2 + + + + + + This is a scenario outline where one scenario is inconclusive + + + + FeatureTitle + Scenario Outlines + + + VariantName + pass_2 + + + Parameter:result + pass_2 + + + + + + Not automated scenario 2 + + + + FeatureTitle + Not Automated At All + + + + + + This is a scenario outline where all scenarios pass + + + + FeatureTitle + Scenario Outlines + + + VariantName + pass_1 + + + Parameter:result + pass_1 + + + + + + And we can go totally bonkers with multiple example sections. + + + + FeatureTitle + Scenario Outlines + + + VariantName + pass_1 + + + Parameter:result + pass_1 + + + Passing Feature Passing Scenario - + FeatureTitle Passing - + - - Failing Feature Passing Scenario - + + Not automated scenario 1 + FeatureTitle - Failing + Not Automated At All + + + + + + This is a scenario outline where one scenario fails + + + + FeatureTitle + Scenario Outlines + + + VariantName + pass_1 + + + Parameter:result + pass_1 + + + + + + Fail to add two numbers + + + + + + + FeatureTitle + Addition - + + + + Not automated adding two numbers + + + + FeatureTitle + Addition + + + + + + And we can go totally bonkers with multiple example sections. + + + + FeatureTitle + Scenario Outlines + + + VariantName + inconclusive_1 + + + Parameter:result + inconclusive_1 + + + @@ -225,23 +512,38 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -257,7 +559,7 @@ Then the result should be 180 on the screen -> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(180) (0,0s) - + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -273,7 +575,7 @@ Then the result should be 260 on the screen -> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(260) (0,0s) - + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -287,7 +589,7 @@ Then the result should be 3 on the screen -> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(3) (0,0s) - + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -298,23 +600,33 @@ And I have entered 2.2 into the calculator When I press add -> done: AdditionSteps.WhenIPressAdd() (0,0s) Then the result should be 3.2 on the screen --> error: Assert.AreEqual failed. Expected:<3.2>. Actual:<3>. +-> error: Input string was not in a correct format. - Assert.AreEqual failed. Expected:<3.2>. Actual:<3>. - w Pickles.TestHarness.MsTest.AdditionSteps.ThenTheResultShouldBeOnTheScreen(Decimal p0) w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\AdditionSteps.cs:wiersz 39 - w lambda_method(Closure , IContextManager , Decimal ) - w TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - w TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - w Pickles.TestHarness.MsTest.AdditionFeature.ScenarioCleanup() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\Addition.feature.cs:wiersz 0 - w Pickles.TestHarness.MsTest.AdditionFeature.FailToAddTwoNumbers() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\Addition.feature:wiersz 34 + Test method Pickles.TestHarness.MsTest.AdditionFeature.FailToAddTwoNumbers threw exception: +System.FormatException: Input string was not in a correct format. + at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) + at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) + at System.String.System.IConvertible.ToInt32(IFormatProvider provider) + at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) + at TechTalk.SpecFlow.Bindings.StepArgumentTypeConverter.ConvertSimple(Type typeToConvertTo, Object value, CultureInfo cultureInfo) + at TechTalk.SpecFlow.Bindings.StepArgumentTypeConverter.ConvertSimple(IBindingType typeToConvertTo, Object value, CultureInfo cultureInfo) + at TechTalk.SpecFlow.Bindings.StepArgumentTypeConverter.Convert(Object value, IBindingType typeToConvertTo, CultureInfo cultureInfo) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ConvertArg(Object value, IBindingType typeToConvertTo) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.<>c__DisplayClass5.<GetExecuteArguments>b__4(Object arg, Int32 argIndex) + at System.Linq.Enumerable.<SelectIterator>d__7`2.MoveNext() + at System.Linq.Buffer`1..ctor(IEnumerable`1 source) + at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.GetExecuteArguments(BindingMatch match) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.AdditionFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\Addition.feature.cs:line 0 + at Pickles.TestHarness.MsTest.AdditionFeature.FailToAddTwoNumbers() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\Addition.feature:line 34 - + Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) @@ -371,94 +683,107 @@ namespace MyNamespace } } - w lambda_method(Closure , String , Object[] ) - w TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) - w TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) - w TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - w TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - w Pickles.TestHarness.MsTest.AdditionFeature.ScenarioCleanup() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\Addition.feature.cs:wiersz 0 - w Pickles.TestHarness.MsTest.AdditionFeature.NotAutomatedAddingTwoNumbers() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\Addition.feature:wiersz 46 + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.AdditionFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\Addition.feature.cs:line 0 + at Pickles.TestHarness.MsTest.AdditionFeature.NotAutomatedAddingTwoNumbers() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\Addition.feature:line 46 - + Then failing step --> error: Assert.Fail failed. by design +-> error: + true + should be + False + but was + True - Assert.Fail failed. by design - w Pickles.TestHarness.MsTest.MinimalSteps.ThenFailingStep() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\Minimal Features\MinimalSteps.cs:wiersz 25 - w lambda_method(Closure , IContextManager ) - w TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - w TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - w Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.ScenarioCleanup() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\Minimal Features\Failing.feature.cs:wiersz 0 - w Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.FailingFeatureFailingScenario() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\Minimal Features\Failing.feature:wiersz 10 + Test method Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.FailingFeatureFailingScenario threw exception: +Shouldly.ChuckedAWobbly: + true + should be + False + but was + True + at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.MinimalFeatures.MinimalSteps.ThenFailingStep() in c:\Dev\Code\pickles-testresults\TestHarness\AutomationLayer\MinimalFeatures\MinimalSteps.cs:line 24 + at lambda_method(Closure , IContextManager ) + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\Minimal Features\Failing.feature.cs:line 0 + at Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.FailingFeatureFailingScenario() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\Minimal Features\Failing.feature:line 10 - + Then inconclusive step --> error: Assert.Inconclusive failed. by design +-> pending: MinimalSteps.ThenInconclusiveStep() - Assert.Inconclusive failed. by design - w Pickles.TestHarness.MsTest.MinimalSteps.ThenInconclusiveStep() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\Minimal Features\MinimalSteps.cs:wiersz 19 - w lambda_method(Closure , IContextManager ) - w TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - w TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - w Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.ScenarioCleanup() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\Minimal Features\Failing.feature.cs:wiersz 0 - w Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.FailingFeatureInconclusiveScenario() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\Minimal Features\Failing.feature:wiersz 7 + Assert.Inconclusive failed. One or more step definitions are not implemented yet. + MinimalSteps.ThenInconclusiveStep() + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\Minimal Features\Failing.feature.cs:line 0 + at Pickles.TestHarness.MsTest.MinimalFeatures.FailingFeature.FailingFeatureInconclusiveScenario() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\Minimal Features\Failing.feature:line 7 - + Then passing step -> done: MinimalSteps.ThenPassingStep() (0,0s) - + Then inconclusive step --> error: Assert.Inconclusive failed. by design +-> pending: MinimalSteps.ThenInconclusiveStep() - Assert.Inconclusive failed. by design - w Pickles.TestHarness.MsTest.MinimalSteps.ThenInconclusiveStep() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\Minimal Features\MinimalSteps.cs:wiersz 19 - w lambda_method(Closure , IContextManager ) - w TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - w TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - w Pickles.TestHarness.MsTest.MinimalFeatures.InconclusiveFeature.ScenarioCleanup() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\Minimal Features\Inconclusive.feature.cs:wiersz 0 - w Pickles.TestHarness.MsTest.MinimalFeatures.InconclusiveFeature.InconclusiveFeatureInconclusiveScenario() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\Minimal Features\Inconclusive.feature:wiersz 7 + Assert.Inconclusive failed. One or more step definitions are not implemented yet. + MinimalSteps.ThenInconclusiveStep() + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.MinimalFeatures.InconclusiveFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\Minimal Features\Inconclusive.feature.cs:line 0 + at Pickles.TestHarness.MsTest.MinimalFeatures.InconclusiveFeature.InconclusiveFeatureInconclusiveScenario() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\Minimal Features\Inconclusive.feature:line 7 - + Then passing step -> done: MinimalSteps.ThenPassingStep() (0,0s) - + Then passing step -> done: MinimalSteps.ThenPassingStep() (0,0s) - + Given unimplemented step -> No matching step definition found for the step. Use the following code to create one: @@ -521,19 +846,19 @@ namespace MyNamespace } } - w lambda_method(Closure , String , Object[] ) - w TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) - w TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) - w TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - w TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - w Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.ScenarioCleanup() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature.cs:wiersz 0 - w Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.NotAutomatedScenario1() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature:wiersz 9 + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature.cs:line 0 + at Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.NotAutomatedScenario1() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature:line 9 - + Given unimplemented step -> No matching step definition found for the step. Use the following code to create one: @@ -596,19 +921,19 @@ namespace MyNamespace } } - w lambda_method(Closure , String , Object[] ) - w TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) - w TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) - w TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - w TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - w Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.ScenarioCleanup() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature.cs:wiersz 0 - w Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.NotAutomatedScenario2() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature:wiersz 14 + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature.cs:line 0 + at Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.NotAutomatedScenario2() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature:line 14 - + Given unimplemented step -> No matching step definition found for the step. Use the following code to create one: @@ -671,17 +996,230 @@ namespace MyNamespace } } - w lambda_method(Closure , String , Object[] ) - w TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) - w TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) - w TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - w TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() - w Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.ScenarioCleanup() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature.cs:wiersz 0 - w Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.NotAutomatedScenario3() w c:\Users\astral\Documents\GitHub\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature:wiersz 19 + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature.cs:line 0 + at Pickles.TestHarness.MsTest.NotAutomatedAtAllFeature.NotAutomatedScenario3() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\NotAutomatedAtAll.feature:line 19 + + + + + + + Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) + + + + + Then the scenario will 'pass_2' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) + + + + + Then the scenario will 'inconclusive_1' +-> pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") + + Assert.Inconclusive failed. One or more step definitions are not implemented yet. + ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:line 0 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature:line 45 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet1_Inconclusive_1() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:line 0 + + + + + + + Then the scenario will 'inconclusive_2' +-> pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_2") + + Assert.Inconclusive failed. One or more step definitions are not implemented yet. + ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_2") + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:line 0 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature:line 45 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet1_Inconclusive_2() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:line 0 + + + + + + + Then the scenario will 'fail_1' +-> error: + true + should be + False + but was + True + + Test method Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet2_Fail_1 threw exception: +Shouldly.ChuckedAWobbly: + true + should be + False + but was + True + at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in c:\Dev\Code\pickles-testresults\TestHarness\AutomationLayer\ScenarioOutlineSteps.cs:line 21 + at lambda_method(Closure , IContextManager , String ) + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:line 0 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature:line 45 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet2_Fail_1() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:line 0 + + + + + + + Then the scenario will 'fail_2' +-> error: + true + should be + False + but was + True + + Test method Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet2_Fail_2 threw exception: +Shouldly.ChuckedAWobbly: + true + should be + False + but was + True + at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in c:\Dev\Code\pickles-testresults\TestHarness\AutomationLayer\ScenarioOutlineSteps.cs:line 21 + at lambda_method(Closure , IContextManager , String ) + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:line 0 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature:line 45 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections__ExampleSet2_Fail_2() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:line 0 + + + + + + + Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) + + + + + Then the scenario will 'pass_2' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) + + + + + Then the scenario will 'pass_3' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_3") (0,0s) + + + + + Then the scenario will 'fail_1' +-> error: + true + should be + False + but was + True + + Test method Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioFails_Fail_1 threw exception: +Shouldly.ChuckedAWobbly: + true + should be + False + but was + True + at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in c:\Dev\Code\pickles-testresults\TestHarness\AutomationLayer\ScenarioOutlineSteps.cs:line 21 + at lambda_method(Closure , IContextManager , String ) + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:line 0 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioFails(String result, String[] exampleTags) in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature:line 34 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioFails_Fail_1() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:line 0 + + + Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) + + + + + Then the scenario will 'pass_2' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) + + + + + Then the scenario will 'inconclusive_1' +-> pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") + + Assert.Inconclusive failed. One or more step definitions are not implemented yet. + ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") + at lambda_method(Closure , String , Object[] ) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestInconclusive(String message) + at TechTalk.SpecFlow.UnitTestProvider.MsTestRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.ErrorHandling.ErrorProvider.ThrowPendingError(TestStatus testStatus, String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors() + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:line 0 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioIsInconclusive(String result, String[] exampleTags) in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature:line 21 + at Pickles.TestHarness.MsTest.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioIsInconclusive_Inconclusive_1() in c:\Dev\Code\pickles-testresults\TestHarness\MsTest\ScenarioOutlines.feature.cs:line 0 + + + + + + + Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) + + + + + Then the scenario will 'pass_2' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) + + \ No newline at end of file diff --git a/src/Pickles/Pickles.Test/results-example-nunit.xml b/src/Pickles/Pickles.Test/results-example-nunit.xml index f5c3b008c..5e2f3f921 100644 --- a/src/Pickles/Pickles.Test/results-example-nunit.xml +++ b/src/Pickles/Pickles.Test/results-example-nunit.xml @@ -1,48 +1,50 @@ - + - - - - + + + + - + - + - + - + - + - - + + - + - + - - + d__7`2.MoveNext() +at System.Linq.Buffer`1..ctor(IEnumerable`1 source) +at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) +at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.GetExecuteArguments(BindingMatch match) +at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) +at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() +at Pickles.TestHarness.nunit.AdditionFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\nunit\Addition.feature.cs:line 0 +at Pickles.TestHarness.nunit.AdditionFeature.FailToAddTwoNumbers() in c:\Dev\Code\pickles-testresults\TestHarness\nunit\Addition.feature:line 34 ]]> @@ -51,7 +53,7 @@ w Pickles.TestHarness.nunit.AdditionFeature.FailToAddTwoNumbers() w c:\Users\ast - + - + - + - + - - + - + - + - + - + - + @@ -128,9 +139,9 @@ w Pickles.TestHarness.nunit.MinimalFeatures.FailingFeature.FailingFeatureFailing - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Pickles/Pickles.Test/results-example-specrun.html b/src/Pickles/Pickles.Test/results-example-specrun.html index 9250c218e..878764406 100644 --- a/src/Pickles/Pickles.Test/results-example-specrun.html +++ b/src/Pickles/Pickles.Test/results-example-specrun.html @@ -94,6 +94,71 @@ </scenario> </scenarios> </feature> + <feature> + <title>Scenario Outlines</title> + <scenarios> + <scenario> + <title>This is a scenario outline where all scenarios pass, pass_1</title> + <result>Passed</result> + </scenario> + <scenario> + <title>This is a scenario outline where all scenarios pass, pass_2</title> + <result>Passed</result> + </scenario> + <scenario> + <title>This is a scenario outline where all scenarios pass, pass_3</title> + <result>Passed</result> + </scenario> + <scenario> + <title>This is a scenario outline where one scenario is inconclusive, pass_1</title> + <result>Passed</result> + </scenario> + <scenario> + <title>This is a scenario outline where one scenario is inconclusive, pass_2</title> + <result>Passed</result> + </scenario> + <scenario> + <title>This is a scenario outline where one scenario is inconclusive, inconclusive_1</title> + <result>Pending</result> + </scenario> + <scenario> + <title>This is a scenario outline where one scenario fails, pass_1</title> + <result>Passed</result> + </scenario> + <scenario> + <title>This is a scenario outline where one scenario fails, pass_2</title> + <result>Passed</result> + </scenario> + <scenario> + <title>This is a scenario outline where one scenario fails, fail_1</title> + <result>Failed</result> + </scenario> + <scenario> + <title>And we can go totally bonkers with multiple example sections., Examples 1, pass_1</title> + <result>Passed</result> + </scenario> + <scenario> + <title>And we can go totally bonkers with multiple example sections., Examples 1, pass_2</title> + <result>Passed</result> + </scenario> + <scenario> + <title>And we can go totally bonkers with multiple example sections., Examples 2, inconclusive_1</title> + <result>Pending</result> + </scenario> + <scenario> + <title>And we can go totally bonkers with multiple example sections., Examples 2, inconclusive_2</title> + <result>Pending</result> + </scenario> + <scenario> + <title>And we can go totally bonkers with multiple example sections., Examples 3, fail_1</title> + <result>Failed</result> + </scenario> + <scenario> + <title>And we can go totally bonkers with multiple example sections., Examples 3, fail_2</title> + <result>Failed</result> + </scenario> + </scenarios> + </feature> </features> Pickles End --> diff --git a/src/Pickles/Pickles.Test/results-example-xunit.xml b/src/Pickles/Pickles.Test/results-example-xunit.xml index aea0e5f53..58e589314 100644 --- a/src/Pickles/Pickles.Test/results-example-xunit.xml +++ b/src/Pickles/Pickles.Test/results-example-xunit.xml @@ -1,4 +1,14 @@ -Given the calculator has clean memory +IgnoredGiven the calculator has clean memory +-> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) +Given I have entered 1 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(1) (0,0s) +And I have entered 2 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(2) (0,0s) +When I press add +-> done: AdditionSteps.WhenIPressAdd() (0,0s) +Then the result should be 3 on the screen +-> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(3) (0,0s) +Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) Given I have entered 1 into the calculator -> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(1) (0,0s) @@ -7,21 +17,19 @@ And I have entered 2.2 into the calculator When I press add -> done: AdditionSteps.WhenIPressAdd() (0,0s) Then the result should be 3.2 on the screen --> error: Assert.Equal() Failure -Expected: 3.2 -Actual: 3 -Assert.Equal() Failure -Expected: 3.2 -Actual: 3 w Xunit.Assert.Equal[T](T expected, T actual, IEqualityComparer`1 comparer) - w Xunit.Assert.Equal[T](T expected, T actual) - w Pickles.TestHarness.xunit.AdditionSteps.ThenTheResultShouldBeOnTheScreen(Decimal p0) w c:\Users\astral\Documents\GitHub\pickles\src\Pickles.TestDataSource\TestHarness\xunit\AdditionSteps.cs:wiersz 39 - w lambda_method(Closure , IContextManager , Decimal ) - w TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - w Pickles.TestHarness.xunit.AdditionFeature.ScenarioCleanup() w c:\Users\astral\Documents\GitHub\pickles\src\Pickles.TestDataSource\TestHarness\xunit\Addition.feature.cs:wiersz 0 - w Pickles.TestHarness.xunit.AdditionFeature.FailToAddTwoNumbers() w c:\Users\astral\Documents\GitHub\pickles\src\Pickles.TestDataSource\TestHarness\xunit\Addition.feature:wiersz 34Given the calculator has clean memory +-> error: Input string was not in a correct format. +System.FormatException : Input string was not in a correct format. at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) + at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) + at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) + at TechTalk.SpecFlow.Bindings.StepArgumentTypeConverter.ConvertSimple(Type typeToConvertTo, Object value, CultureInfo cultureInfo) + at System.Linq.Enumerable.<SelectIterator>d__7`2.MoveNext() + at System.Linq.Buffer`1..ctor(IEnumerable`1 source) + at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.GetExecuteArguments(BindingMatch match) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.AdditionFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\Addition.feature.cs:line 0 + at Pickles.TestHarness.xunit.AdditionFeature.FailToAddTwoNumbers() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\Addition.feature:line 34Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) Given unimplemented step -> No matching step definition found for the step. Use the following code to create one: @@ -75,22 +83,10 @@ namespace MyNamespace } } } - w TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - w Pickles.TestHarness.xunit.AdditionFeature.ScenarioCleanup() w c:\Users\astral\Documents\GitHub\pickles\src\Pickles.TestDataSource\TestHarness\xunit\Addition.feature.cs:wiersz 0 - w Pickles.TestHarness.xunit.AdditionFeature.NotAutomatedAddingTwoNumbers() w c:\Users\astral\Documents\GitHub\pickles\src\Pickles.TestDataSource\TestHarness\xunit\Addition.feature:wiersz 46IgnoredGiven the calculator has clean memory --> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -Given I have entered 40 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(40) (0,0s) -And I have entered 50 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(50) (0,0s) -And I have entered 90 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(90) (0,0s) -When I press add --> done: AdditionSteps.WhenIPressAdd() (0,0s) -Then the result should be 180 on the screen --> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(180) (0,0s) -Given the calculator has clean memory + at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.AdditionFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\Addition.feature.cs:line 0 + at Pickles.TestHarness.xunit.AdditionFeature.NotAutomatedAddingTwoNumbers() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\Addition.feature:line 46Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) Given I have entered 60 into the calculator -> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(60) (0,0s) @@ -102,17 +98,57 @@ When I press add -> done: AdditionSteps.WhenIPressAdd() (0,0s) Then the result should be 260 on the screen -> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(260) (0,0s) -Given the calculator has clean memory +Given the calculator has clean memory -> done: AdditionSteps.GivenTheCalculatorHasCleanMemory() (0,0s) -Given I have entered 1 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(1) (0,0s) -And I have entered 2 into the calculator --> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(2) (0,0s) +Given I have entered 40 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(40) (0,0s) +And I have entered 50 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(50) (0,0s) +And I have entered 90 into the calculator +-> done: AdditionSteps.GivenIHaveEnteredIntoTheCalculator(90) (0,0s) When I press add -> done: AdditionSteps.WhenIPressAdd() (0,0s) -Then the result should be 3 on the screen --> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(3) (0,0s) -Given unimplemented step +Then the result should be 180 on the screen +-> done: AdditionSteps.ThenTheResultShouldBeOnTheScreen(180) (0,0s) +Then failing step +-> error: + true + should be + False + but was + True +Shouldly.ChuckedAWobbly : + true + should be + False + but was + True at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.MinimalFeatures.MinimalSteps.ThenFailingStep() in c:\Dev\Code\pickles-testresults\TestHarness\AutomationLayer\MinimalFeatures\MinimalSteps.cs:line 24 + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.MinimalFeatures.FailingFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\Minimal Features\Failing.feature.cs:line 0 + at Pickles.TestHarness.xunit.MinimalFeatures.FailingFeature.FailingFeatureFailingScenario() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\Minimal Features\Failing.feature:line 10Then passing step +-> done: MinimalSteps.ThenPassingStep() (0,0s) +Then inconclusive step +-> pending: MinimalSteps.ThenInconclusiveStep() +TechTalk.SpecFlow.SpecFlowException : Test pending: One or more step definitions are not implemented yet. + MinimalSteps.ThenInconclusiveStep() at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.MinimalFeatures.FailingFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\Minimal Features\Failing.feature.cs:line 0 + at Pickles.TestHarness.xunit.MinimalFeatures.FailingFeature.FailingFeatureInconclusiveScenario() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\Minimal Features\Failing.feature:line 7Then passing step +-> done: MinimalSteps.ThenPassingStep() (0,0s) +Then inconclusive step +-> pending: MinimalSteps.ThenInconclusiveStep() +TechTalk.SpecFlow.SpecFlowException : Test pending: One or more step definitions are not implemented yet. + MinimalSteps.ThenInconclusiveStep() at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.MinimalFeatures.InconclusiveFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\Minimal Features\Inconclusive.feature.cs:line 0 + at Pickles.TestHarness.xunit.MinimalFeatures.InconclusiveFeature.InconclusiveFeatureInconclusiveScenario() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\Minimal Features\Inconclusive.feature:line 7Then passing step +-> done: MinimalSteps.ThenPassingStep() (0,0s) +Given unimplemented step -> No matching step definition found for the step. Use the following code to create one: [Given(@"unimplemented step")] public void GivenUnimplementedStep() @@ -172,10 +208,10 @@ namespace MyNamespace } } } - w TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - w Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.ScenarioCleanup() w c:\Users\astral\Documents\GitHub\pickles\src\Pickles.TestDataSource\TestHarness\xunit\NotAutomatedAtAll.feature.cs:wiersz 0 - w Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.NotAutomatedScenario3() w c:\Users\astral\Documents\GitHub\pickles\src\Pickles.TestDataSource\TestHarness\xunit\NotAutomatedAtAll.feature:wiersz 19Given unimplemented step + at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\NotAutomatedAtAll.feature.cs:line 0 + at Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.NotAutomatedScenario2() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\NotAutomatedAtAll.feature:line 14Given unimplemented step -> No matching step definition found for the step. Use the following code to create one: [Given(@"unimplemented step")] public void GivenUnimplementedStep() @@ -235,10 +271,10 @@ namespace MyNamespace } } } - w TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - w Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.ScenarioCleanup() w c:\Users\astral\Documents\GitHub\pickles\src\Pickles.TestDataSource\TestHarness\xunit\NotAutomatedAtAll.feature.cs:wiersz 0 - w Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.NotAutomatedScenario1() w c:\Users\astral\Documents\GitHub\pickles\src\Pickles.TestDataSource\TestHarness\xunit\NotAutomatedAtAll.feature:wiersz 9Given unimplemented step + at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\NotAutomatedAtAll.feature.cs:line 0 + at Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.NotAutomatedScenario3() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\NotAutomatedAtAll.feature:line 19Given unimplemented step -> No matching step definition found for the step. Use the following code to create one: [Given(@"unimplemented step")] public void GivenUnimplementedStep() @@ -298,7 +334,103 @@ namespace MyNamespace } } } - w TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) - w TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() - w Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.ScenarioCleanup() w c:\Users\astral\Documents\GitHub\pickles\src\Pickles.TestDataSource\TestHarness\xunit\NotAutomatedAtAll.feature.cs:wiersz 0 - w Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.NotAutomatedScenario2() w c:\Users\astral\Documents\GitHub\pickles\src\Pickles.TestDataSource\TestHarness\xunit\NotAutomatedAtAll.feature:wiersz 14 \ No newline at end of file + at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\NotAutomatedAtAll.feature.cs:line 0 + at Pickles.TestHarness.xunit.NotAutomatedAtAllFeature.NotAutomatedScenario1() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\NotAutomatedAtAll.feature:line 9Then the scenario will 'fail_1' +-> error: + true + should be + False + but was + True +Shouldly.ChuckedAWobbly : + true + should be + False + but was + True at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in c:\Dev\Code\pickles-testresults\TestHarness\AutomationLayer\ScenarioOutlineSteps.cs:line 21 + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature.cs:line 0 + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in c:\Dev\Code\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature:line 45Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) +Then the scenario will 'pass_2' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) +Then the scenario will 'inconclusive_1' +-> pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") +TechTalk.SpecFlow.SpecFlowException : Test pending: One or more step definitions are not implemented yet. + ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature.cs:line 0 + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in c:\Dev\Code\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature:line 45Then the scenario will 'inconclusive_2' +-> pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_2") +TechTalk.SpecFlow.SpecFlowException : Test pending: One or more step definitions are not implemented yet. + ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_2") at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature.cs:line 0 + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in c:\Dev\Code\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature:line 45Then the scenario will 'fail_2' +-> error: + true + should be + False + but was + True +Shouldly.ChuckedAWobbly : + true + should be + False + but was + True at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in c:\Dev\Code\pickles-testresults\TestHarness\AutomationLayer\ScenarioOutlineSteps.cs:line 21 + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature.cs:line 0 + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.AndWeCanGoTotallyBonkersWithMultipleExampleSections_(String result, String[] exampleTags) in c:\Dev\Code\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature:line 45Then the scenario will 'fail_1' +-> error: + true + should be + False + but was + True +Shouldly.ChuckedAWobbly : + true + should be + False + but was + True at Shouldly.ShouldlyCoreExtensions.AssertAwesomely[T](T actual, Func`2 specifiedConstraint, Object originalActual, Object originalExpected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldlyCoreExtensions.cs:line 18 + at Shouldly.ShouldBeTestExtensions.ShouldBe[T](T actual, T expected) in c:\TeamCity\buildAgent\work\10efaabfa8adbd4e\src\Shouldly\ShouldBeTestExtensions.cs:line 17 + at AutomationLayer.ScenarioOutlineSteps.ThenTheScenarioWill(String result) in c:\Dev\Code\pickles-testresults\TestHarness\AutomationLayer\ScenarioOutlineSteps.cs:line 21 + at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(StepInstance stepInstance) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature.cs:line 0 + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioFails(String result, String[] exampleTags) in c:\Dev\Code\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature:line 34Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) +Then the scenario will 'pass_2' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) +Then the scenario will 'pass_2' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) +Then the scenario will 'inconclusive_1' +-> pending: ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") +TechTalk.SpecFlow.SpecFlowException : Test pending: One or more step definitions are not implemented yet. + ScenarioOutlineSteps.ThenTheScenarioWill("inconclusive_1") at TechTalk.SpecFlow.UnitTestProvider.XUnitRuntimeProvider.TestPending(String message) + at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep() + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ScenarioCleanup() in c:\Dev\Code\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature.cs:line 0 + at Pickles.TestHarness.xunit.ScenarioOutlinesFeature.ThisIsAScenarioOutlineWhereOneScenarioIsInconclusive(String result, String[] exampleTags) in c:\Dev\Code\pickles-testresults\TestHarness\xunit\ScenarioOutlines.feature:line 21Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) +Then the scenario will 'pass_3' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_3") (0,0s) +Then the scenario will 'pass_1' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_1") (0,0s) +Then the scenario will 'pass_2' +-> done: ScenarioOutlineSteps.ThenTheScenarioWill("pass_2") (0,0s) + \ No newline at end of file diff --git a/src/Pickles/Pickles.UserInterface/MainWindowViewModel.cs b/src/Pickles/Pickles.UserInterface/MainWindowViewModel.cs index 43e6c9130..e6ce85234 100644 --- a/src/Pickles/Pickles.UserInterface/MainWindowViewModel.cs +++ b/src/Pickles/Pickles.UserInterface/MainWindowViewModel.cs @@ -24,6 +24,8 @@ using System.Linq; using System.Windows.Input; using Autofac; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.UserInterface.Mvvm; using PicklesDoc.Pickles.UserInterface.Settings; diff --git a/src/Pickles/Pickles/DirectoryCrawler/FeatureNode.cs b/src/Pickles/Pickles/DirectoryCrawler/FeatureNode.cs index 5e5006d7f..853f4deec 100644 --- a/src/Pickles/Pickles/DirectoryCrawler/FeatureNode.cs +++ b/src/Pickles/Pickles/DirectoryCrawler/FeatureNode.cs @@ -21,6 +21,7 @@ limitations under the License. using System; using System.IO.Abstractions; using PicklesDoc.Pickles.Extensions; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.DirectoryCrawler diff --git a/src/Pickles/Pickles/DirectoryCrawler/FeatureNodeFactory.cs b/src/Pickles/Pickles/DirectoryCrawler/FeatureNodeFactory.cs index 8c19b4794..444339954 100644 --- a/src/Pickles/Pickles/DirectoryCrawler/FeatureNodeFactory.cs +++ b/src/Pickles/Pickles/DirectoryCrawler/FeatureNodeFactory.cs @@ -23,6 +23,7 @@ limitations under the License. using System.Xml.Linq; using PicklesDoc.Pickles.DocumentationBuilders.HTML; using PicklesDoc.Pickles.Extensions; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.DirectoryCrawler diff --git a/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaFeatureFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaFeatureFormatter.cs index 0b4359e6c..82721e42e 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaFeatureFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaFeatureFormatter.cs @@ -23,6 +23,7 @@ limitations under the License. using System.Xml.Linq; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.Extensions; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; diff --git a/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaScenarioFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaScenarioFormatter.cs index 4fa7aaecc..185c0a839 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaScenarioFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaScenarioFormatter.cs @@ -20,6 +20,8 @@ limitations under the License. using System; using System.Xml.Linq; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; diff --git a/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaScenarioOutlineFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaScenarioOutlineFormatter.cs index 8c43e366a..74afe771e 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaScenarioOutlineFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaScenarioOutlineFormatter.cs @@ -20,6 +20,8 @@ limitations under the License. using System; using System.Xml.Linq; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; diff --git a/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaStepFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaStepFormatter.cs index 9f11c335b..9cab8149e 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaStepFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaStepFormatter.cs @@ -20,6 +20,8 @@ limitations under the License. using System; using System.Xml.Linq; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.DocumentationBuilders.DITA diff --git a/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaTableFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaTableFormatter.cs index 4e1fd9ec0..ce96ea483 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaTableFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/DITA/DitaTableFormatter.cs @@ -1,5 +1,7 @@ using System; using System.Xml.Linq; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.DocumentationBuilders.DITA diff --git a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelFeatureFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelFeatureFormatter.cs index ec70731e9..366dc6254 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelFeatureFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelFeatureFormatter.cs @@ -22,6 +22,8 @@ limitations under the License. using System.Reflection; using ClosedXML.Excel; using NLog; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; diff --git a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelScenarioFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelScenarioFormatter.cs index f4dd7da22..23e4dd7d4 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelScenarioFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelScenarioFormatter.cs @@ -20,6 +20,8 @@ limitations under the License. using System; using ClosedXML.Excel; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; diff --git a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelScenarioOutlineFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelScenarioOutlineFormatter.cs index 57c0ec0d2..5cc0e86a5 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelScenarioOutlineFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelScenarioOutlineFormatter.cs @@ -20,6 +20,8 @@ limitations under the License. using System; using ClosedXML.Excel; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; diff --git a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelSheetNameGenerator.cs b/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelSheetNameGenerator.cs index 69d271f0c..6d42fea59 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelSheetNameGenerator.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelSheetNameGenerator.cs @@ -21,6 +21,8 @@ limitations under the License. using System; using System.Linq; using ClosedXML.Excel; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.DocumentationBuilders.Excel diff --git a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelStepFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelStepFormatter.cs index e6886d59d..60e845e8d 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelStepFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelStepFormatter.cs @@ -20,6 +20,8 @@ limitations under the License. using System; using ClosedXML.Excel; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.DocumentationBuilders.Excel diff --git a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelTableFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelTableFormatter.cs index 3d43ac707..57f4c9b79 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelTableFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/Excel/ExcelTableFormatter.cs @@ -20,6 +20,8 @@ limitations under the License. using System; using ClosedXML.Excel; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.DocumentationBuilders.Excel diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDescriptionFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDescriptionFormatter.cs index e62bf2d1b..f172e71d4 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDescriptionFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlDescriptionFormatter.cs @@ -20,7 +20,7 @@ limitations under the License. using System; using System.Xml.Linq; -using MarkdownDeep; + using PicklesDoc.Pickles.Extensions; namespace PicklesDoc.Pickles.DocumentationBuilders.HTML diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlFeatureFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlFeatureFormatter.cs index e30bf298d..d0d155082 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlFeatureFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlFeatureFormatter.cs @@ -21,6 +21,8 @@ limitations under the License. using System; using System.Linq; using System.Xml.Linq; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.DocumentationBuilders.HTML diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlImageResultFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlImageResultFormatter.cs index a2a4b9786..9089aa084 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlImageResultFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlImageResultFormatter.cs @@ -21,6 +21,8 @@ limitations under the License. using System; using System.Text; using System.Xml.Linq; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; @@ -145,5 +147,17 @@ public XElement Format(ScenarioOutline scenarioOutline) return null; } + + public XElement Format(ScenarioOutline scenarioOutline, params string[] exampleValues) + { + if (this.configuration.HasTestResults && this.results.SupportsExampleResults) + { + TestResult exampleResult = this.results.GetExampleResult(scenarioOutline, exampleValues); + + return this.BuildImageElement(exampleResult); + } + + return null; + } } } \ No newline at end of file diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlScenarioFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlScenarioFormatter.cs index 16ce95692..a3e9a07dc 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlScenarioFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlScenarioFormatter.cs @@ -22,6 +22,8 @@ limitations under the License. using System.Collections.Generic; using System.Linq; using System.Xml.Linq; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.DocumentationBuilders.HTML diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlScenarioOutlineFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlScenarioOutlineFormatter.cs index aee831482..7fc242b4b 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlScenarioOutlineFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlScenarioOutlineFormatter.cs @@ -21,7 +21,9 @@ limitations under the License. using System; using System.Linq; using System.Xml.Linq; -using PicklesDoc.Pickles.Parser; + +using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.TestFrameworks; namespace PicklesDoc.Pickles.DocumentationBuilders.HTML { @@ -32,17 +34,20 @@ public class HtmlScenarioOutlineFormatter private readonly HtmlStepFormatter htmlStepFormatter; private readonly HtmlTableFormatter htmlTableFormatter; private readonly XNamespace xmlns; + private readonly ITestResults testResults; public HtmlScenarioOutlineFormatter( HtmlStepFormatter htmlStepFormatter, HtmlDescriptionFormatter htmlDescriptionFormatter, HtmlTableFormatter htmlTableFormatter, - HtmlImageResultFormatter htmlImageResultFormatter) + HtmlImageResultFormatter htmlImageResultFormatter, + ITestResults testResults) { this.htmlStepFormatter = htmlStepFormatter; this.htmlDescriptionFormatter = htmlDescriptionFormatter; this.htmlTableFormatter = htmlTableFormatter; this.htmlImageResultFormatter = htmlImageResultFormatter; + this.testResults = testResults; this.xmlns = HtmlNamespace.Xhtml; } @@ -80,19 +85,19 @@ private XElement FormatSteps(ScenarioOutline scenarioOutline) private XElement FormatExamples(ScenarioOutline scenarioOutline) { - var exampleDiv = new XElement(this.xmlns + "div"); - - foreach (var example in scenarioOutline.Examples) - { - exampleDiv.Add(new XElement(this.xmlns + "div", - new XAttribute("class", "examples"), - new XElement(this.xmlns + "h3", "Examples: " + example.Name), - this.htmlDescriptionFormatter.Format(example.Description), - (example.TableArgument == null) ? null : this.htmlTableFormatter.Format(example.TableArgument) - )); - } - - return exampleDiv; + var exampleDiv = new XElement(this.xmlns + "div"); + + foreach (var example in scenarioOutline.Examples) + { + exampleDiv.Add(new XElement(this.xmlns + "div", + new XAttribute("class", "examples"), + new XElement(this.xmlns + "h3", "Examples: " + example.Name), + this.htmlDescriptionFormatter.Format(example.Description), + (example.TableArgument == null) ? null : this.htmlTableFormatter.Format(example.TableArgument, scenarioOutline, testResults.SupportsExampleResults) + )); + } + + return exampleDiv; } public XElement Format(ScenarioOutline scenarioOutline, int id) @@ -103,8 +108,8 @@ public XElement Format(ScenarioOutline scenarioOutline, int id) this.FormatHeading(scenarioOutline), this.FormatSteps(scenarioOutline), (scenarioOutline.Examples == null || !scenarioOutline.Examples.Any()) - ? null - : this.FormatExamples(scenarioOutline) + ? null + : this.FormatExamples(scenarioOutline) ); } diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlStepFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlStepFormatter.cs index d14678e81..f95860a06 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlStepFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlStepFormatter.cs @@ -20,6 +20,8 @@ limitations under the License. using System; using System.Xml.Linq; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.DocumentationBuilders.HTML diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableFormatter.cs index c8b34791a..95f414be3 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableFormatter.cs @@ -21,43 +21,76 @@ limitations under the License. using System; using System.Linq; using System.Xml.Linq; -using PicklesDoc.Pickles.Parser; + +using PicklesDoc.Pickles.ObjectModel; namespace PicklesDoc.Pickles.DocumentationBuilders.HTML { public class HtmlTableFormatter { private readonly XNamespace xmlns; + private readonly HtmlImageResultFormatter htmlImageResultFormatter; - public HtmlTableFormatter() + public HtmlTableFormatter(HtmlImageResultFormatter htmlImageResultFormatter) { - this.xmlns = HtmlNamespace.Xhtml; + this.htmlImageResultFormatter = htmlImageResultFormatter; + this.xmlns = HtmlNamespace.Xhtml; } public XElement Format(Table table) + { + return Format(table, null, false); + } + + public XElement Format(Table table, ScenarioOutline scenarioOutline, bool includeResults) { if (table == null) return null; + var headerCells = table.HeaderRow.ToArray(); + + if (includeResults) + { + headerCells = headerCells.Concat(new[] { " " }).ToArray(); + } + return new XElement(this.xmlns + "div", new XAttribute("class", "table_container"), new XElement(this.xmlns + "table", new XAttribute("class", "datatable"), new XElement(this.xmlns + "thead", new XElement(this.xmlns + "tr", - table.HeaderRow.Select( + headerCells.Select( cell => new XElement(this.xmlns + "th", cell)) ) ), new XElement(this.xmlns + "tbody", - table.DataRows.Select(row => new XElement(this.xmlns + "tr", - row.Select( - cell => - new XElement( - this.xmlns + "td", - cell))) - ) + table.DataRows.Select(row => this.FormatRow(row, scenarioOutline, includeResults)) ) )); } + + private XElement FormatRow(TableRow row, ScenarioOutline scenarioOutline, bool includeResults) + { + var formattedCells = row.Select( + cell => + new XElement( + this.xmlns + "td", + cell)).ToList(); + + if (includeResults && scenarioOutline != null) + { + formattedCells.Add( + new XElement(this.xmlns + "td", this.htmlImageResultFormatter.Format(scenarioOutline, row.ToArray()))); + } + + var result = new XElement(this.xmlns + "tr"); + + foreach (var cell in formattedCells) + { + result.Add(cell); + } + + return result; + } } } \ No newline at end of file diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableOfContentsFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableOfContentsFormatter.cs index b2831247a..d34144bc4 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableOfContentsFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/HTML/HtmlTableOfContentsFormatter.cs @@ -24,6 +24,7 @@ limitations under the License. using NGenerics.DataStructures.Trees; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.Extensions; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.DocumentationBuilders.HTML diff --git a/src/Pickles/Pickles/DocumentationBuilders/HTML/IHtmlFeatureFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/HTML/IHtmlFeatureFormatter.cs index e319bbb60..0232761f5 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/HTML/IHtmlFeatureFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/HTML/IHtmlFeatureFormatter.cs @@ -20,6 +20,8 @@ limitations under the License. using System; using System.Xml.Linq; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.DocumentationBuilders.HTML diff --git a/src/Pickles/Pickles/DocumentationBuilders/JSON/FeatureWithMetaInfo.cs b/src/Pickles/Pickles/DocumentationBuilders/JSON/FeatureWithMetaInfo.cs index 483ff07ea..f9d5ee289 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/JSON/FeatureWithMetaInfo.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/JSON/FeatureWithMetaInfo.cs @@ -1,5 +1,6 @@ using System; using PicklesDoc.Pickles.DirectoryCrawler; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordBackgroundFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/Word/WordBackgroundFormatter.cs index 490cfd13e..0102abd11 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Word/WordBackgroundFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/Word/WordBackgroundFormatter.cs @@ -1,5 +1,7 @@  using DocumentFormat.OpenXml.Wordprocessing; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using Table = DocumentFormat.OpenXml.Wordprocessing.Table; using TableRow = DocumentFormat.OpenXml.Wordprocessing.TableRow; diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordFeatureFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/Word/WordFeatureFormatter.cs index d10aa171a..4f3d5bf69 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Word/WordFeatureFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/Word/WordFeatureFormatter.cs @@ -22,6 +22,7 @@ limitations under the License. using DocumentFormat.OpenXml.Wordprocessing; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.Extensions; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordScenarioFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/Word/WordScenarioFormatter.cs index 80dd5bcc6..8998f6894 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Word/WordScenarioFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/Word/WordScenarioFormatter.cs @@ -21,6 +21,7 @@ limitations under the License. using System; using DocumentFormat.OpenXml.Wordprocessing; using PicklesDoc.Pickles.Extensions; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordScenarioOutlineFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/Word/WordScenarioOutlineFormatter.cs index 36e2b65db..d9430c63b 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Word/WordScenarioOutlineFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/Word/WordScenarioOutlineFormatter.cs @@ -21,6 +21,7 @@ limitations under the License. using System; using DocumentFormat.OpenXml.Wordprocessing; using PicklesDoc.Pickles.Extensions; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordStepFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/Word/WordStepFormatter.cs index 6bb7e992c..a74843536 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Word/WordStepFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/Word/WordStepFormatter.cs @@ -22,6 +22,7 @@ limitations under the License. using DocumentFormat.OpenXml; using DocumentFormat.OpenXml.Wordprocessing; using PicklesDoc.Pickles.Extensions; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.DocumentationBuilders.Word diff --git a/src/Pickles/Pickles/DocumentationBuilders/Word/WordTableFormatter.cs b/src/Pickles/Pickles/DocumentationBuilders/Word/WordTableFormatter.cs index 0396b5800..0abcc52ee 100644 --- a/src/Pickles/Pickles/DocumentationBuilders/Word/WordTableFormatter.cs +++ b/src/Pickles/Pickles/DocumentationBuilders/Word/WordTableFormatter.cs @@ -20,7 +20,7 @@ limitations under the License. using System; using DocumentFormat.OpenXml.Wordprocessing; -using Table = PicklesDoc.Pickles.Parser.Table; +using Table = PicklesDoc.Pickles.ObjectModel.Table; namespace PicklesDoc.Pickles.DocumentationBuilders.Word { @@ -52,7 +52,7 @@ public void Format(Body body, Table table) } wordTable.Append(headerRow); - foreach (Parser.TableRow row in table.DataRows) + foreach (ObjectModel.TableRow row in table.DataRows) { var wordRow = new TableRow(); diff --git a/src/Pickles/Pickles/FeatureParser.cs b/src/Pickles/Pickles/FeatureParser.cs index ae6e79df5..70b478dc1 100644 --- a/src/Pickles/Pickles/FeatureParser.cs +++ b/src/Pickles/Pickles/FeatureParser.cs @@ -20,6 +20,8 @@ limitations under the License. using System; using System.IO.Abstractions; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using gherkin.lexer; diff --git a/src/Pickles/Pickles/Parser/Example.cs b/src/Pickles/Pickles/ObjectModel/Example.cs similarity index 95% rename from src/Pickles/Pickles/Parser/Example.cs rename to src/Pickles/Pickles/ObjectModel/Example.cs index 2db9a72f4..9707a01d5 100644 --- a/src/Pickles/Pickles/Parser/Example.cs +++ b/src/Pickles/Pickles/ObjectModel/Example.cs @@ -20,7 +20,7 @@ limitations under the License. using System; -namespace PicklesDoc.Pickles.Parser +namespace PicklesDoc.Pickles.ObjectModel { public class Example { diff --git a/src/Pickles/Pickles/Parser/Feature.cs b/src/Pickles/Pickles/ObjectModel/Feature.cs similarity index 96% rename from src/Pickles/Pickles/Parser/Feature.cs rename to src/Pickles/Pickles/ObjectModel/Feature.cs index bb6ba8816..b239c18f8 100644 --- a/src/Pickles/Pickles/Parser/Feature.cs +++ b/src/Pickles/Pickles/ObjectModel/Feature.cs @@ -18,10 +18,12 @@ limitations under the License. #endregion +using System; using System.Collections.Generic; + using PicklesDoc.Pickles.TestFrameworks; -namespace PicklesDoc.Pickles.Parser +namespace PicklesDoc.Pickles.ObjectModel { public class Feature { diff --git a/src/Pickles/Pickles/Parser/IFeatureElement.cs b/src/Pickles/Pickles/ObjectModel/IFeatureElement.cs similarity index 77% rename from src/Pickles/Pickles/Parser/IFeatureElement.cs rename to src/Pickles/Pickles/ObjectModel/IFeatureElement.cs index 3913bf36d..fb32489eb 100644 --- a/src/Pickles/Pickles/Parser/IFeatureElement.cs +++ b/src/Pickles/Pickles/ObjectModel/IFeatureElement.cs @@ -1,7 +1,9 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; + using PicklesDoc.Pickles.TestFrameworks; -namespace PicklesDoc.Pickles.Parser +namespace PicklesDoc.Pickles.ObjectModel { public interface IFeatureElement { diff --git a/src/Pickles/Pickles/Parser/Keyword.cs b/src/Pickles/Pickles/ObjectModel/Keyword.cs similarity index 94% rename from src/Pickles/Pickles/Parser/Keyword.cs rename to src/Pickles/Pickles/ObjectModel/Keyword.cs index 870c0b2c5..543fe3260 100644 --- a/src/Pickles/Pickles/Parser/Keyword.cs +++ b/src/Pickles/Pickles/ObjectModel/Keyword.cs @@ -20,7 +20,7 @@ limitations under the License. using System; -namespace PicklesDoc.Pickles.Parser +namespace PicklesDoc.Pickles.ObjectModel { public enum Keyword { diff --git a/src/Pickles/Pickles/Parser/Scenario.cs b/src/Pickles/Pickles/ObjectModel/Scenario.cs similarity index 95% rename from src/Pickles/Pickles/Parser/Scenario.cs rename to src/Pickles/Pickles/ObjectModel/Scenario.cs index cf0bec291..6186db07e 100644 --- a/src/Pickles/Pickles/Parser/Scenario.cs +++ b/src/Pickles/Pickles/ObjectModel/Scenario.cs @@ -18,10 +18,12 @@ limitations under the License. #endregion +using System; using System.Collections.Generic; + using PicklesDoc.Pickles.TestFrameworks; -namespace PicklesDoc.Pickles.Parser +namespace PicklesDoc.Pickles.ObjectModel { public class Scenario : IFeatureElement { diff --git a/src/Pickles/Pickles/Parser/ScenarioOutline.cs b/src/Pickles/Pickles/ObjectModel/ScenarioOutline.cs similarity index 95% rename from src/Pickles/Pickles/Parser/ScenarioOutline.cs rename to src/Pickles/Pickles/ObjectModel/ScenarioOutline.cs index fb5131574..c9745c15e 100644 --- a/src/Pickles/Pickles/Parser/ScenarioOutline.cs +++ b/src/Pickles/Pickles/ObjectModel/ScenarioOutline.cs @@ -18,10 +18,12 @@ limitations under the License. #endregion +using System; using System.Collections.Generic; + using PicklesDoc.Pickles.TestFrameworks; -namespace PicklesDoc.Pickles.Parser +namespace PicklesDoc.Pickles.ObjectModel { public class ScenarioOutline : IFeatureElement { diff --git a/src/Pickles/Pickles/Parser/Step.cs b/src/Pickles/Pickles/ObjectModel/Step.cs similarity index 95% rename from src/Pickles/Pickles/Parser/Step.cs rename to src/Pickles/Pickles/ObjectModel/Step.cs index 5bbe36972..0c943fb20 100644 --- a/src/Pickles/Pickles/Parser/Step.cs +++ b/src/Pickles/Pickles/ObjectModel/Step.cs @@ -20,7 +20,7 @@ limitations under the License. using System; -namespace PicklesDoc.Pickles.Parser +namespace PicklesDoc.Pickles.ObjectModel { public class Step { diff --git a/src/Pickles/Pickles/Parser/Table.cs b/src/Pickles/Pickles/ObjectModel/Table.cs similarity index 95% rename from src/Pickles/Pickles/Parser/Table.cs rename to src/Pickles/Pickles/ObjectModel/Table.cs index ecb758357..c2e4b2193 100644 --- a/src/Pickles/Pickles/Parser/Table.cs +++ b/src/Pickles/Pickles/ObjectModel/Table.cs @@ -21,7 +21,7 @@ limitations under the License. using System; using System.Collections.Generic; -namespace PicklesDoc.Pickles.Parser +namespace PicklesDoc.Pickles.ObjectModel { public class Table { diff --git a/src/Pickles/Pickles/Parser/TableRow.cs b/src/Pickles/Pickles/ObjectModel/TableRow.cs similarity index 87% rename from src/Pickles/Pickles/Parser/TableRow.cs rename to src/Pickles/Pickles/ObjectModel/TableRow.cs index 5e5f32998..57d9200ed 100644 --- a/src/Pickles/Pickles/Parser/TableRow.cs +++ b/src/Pickles/Pickles/ObjectModel/TableRow.cs @@ -21,7 +21,9 @@ limitations under the License. using System; using System.Collections.Generic; -namespace PicklesDoc.Pickles.Parser +using PicklesDoc.Pickles.TestFrameworks; + +namespace PicklesDoc.Pickles.ObjectModel { public class TableRow : List { @@ -33,5 +35,7 @@ public TableRow(params string[] cells) { AddRange(cells); } + + public TestResult Result { get; set; } } } \ No newline at end of file diff --git a/src/Pickles/Pickles/Parser/ExampleBuilder.cs b/src/Pickles/Pickles/Parser/Builders/ExampleBuilder.cs similarity index 94% rename from src/Pickles/Pickles/Parser/ExampleBuilder.cs rename to src/Pickles/Pickles/Parser/Builders/ExampleBuilder.cs index 166db9a68..af0dd2b0e 100644 --- a/src/Pickles/Pickles/Parser/ExampleBuilder.cs +++ b/src/Pickles/Pickles/Parser/Builders/ExampleBuilder.cs @@ -21,7 +21,9 @@ limitations under the License. using System; using System.Collections.Generic; -namespace PicklesDoc.Pickles.Parser +using PicklesDoc.Pickles.ObjectModel; + +namespace PicklesDoc.Pickles.Parser.Builders { public class ExampleBuilder { diff --git a/src/Pickles/Pickles/Parser/ScenarioBuilder.cs b/src/Pickles/Pickles/Parser/Builders/ScenarioBuilder.cs similarity index 95% rename from src/Pickles/Pickles/Parser/ScenarioBuilder.cs rename to src/Pickles/Pickles/Parser/Builders/ScenarioBuilder.cs index 9ea83b0c0..a7cfe7c28 100644 --- a/src/Pickles/Pickles/Parser/ScenarioBuilder.cs +++ b/src/Pickles/Pickles/Parser/Builders/ScenarioBuilder.cs @@ -21,7 +21,9 @@ limitations under the License. using System; using System.Collections.Generic; -namespace PicklesDoc.Pickles.Parser +using PicklesDoc.Pickles.ObjectModel; + +namespace PicklesDoc.Pickles.Parser.Builders { internal class ScenarioBuilder { diff --git a/src/Pickles/Pickles/Parser/ScenarioOutlineBuilder.cs b/src/Pickles/Pickles/Parser/Builders/ScenarioOutlineBuilder.cs similarity index 96% rename from src/Pickles/Pickles/Parser/ScenarioOutlineBuilder.cs rename to src/Pickles/Pickles/Parser/Builders/ScenarioOutlineBuilder.cs index 4e88c3b7b..99f2a9380 100644 --- a/src/Pickles/Pickles/Parser/ScenarioOutlineBuilder.cs +++ b/src/Pickles/Pickles/Parser/Builders/ScenarioOutlineBuilder.cs @@ -21,7 +21,9 @@ limitations under the License. using System; using System.Collections.Generic; -namespace PicklesDoc.Pickles.Parser +using PicklesDoc.Pickles.ObjectModel; + +namespace PicklesDoc.Pickles.Parser.Builders { internal class ScenarioOutlineBuilder { diff --git a/src/Pickles/Pickles/Parser/StepBuilder.cs b/src/Pickles/Pickles/Parser/Builders/StepBuilder.cs similarity index 97% rename from src/Pickles/Pickles/Parser/StepBuilder.cs rename to src/Pickles/Pickles/Parser/Builders/StepBuilder.cs index fb6021665..7f4917350 100644 --- a/src/Pickles/Pickles/Parser/StepBuilder.cs +++ b/src/Pickles/Pickles/Parser/Builders/StepBuilder.cs @@ -20,9 +20,12 @@ limitations under the License. using System; using System.Collections.Generic; + using gherkin; -namespace PicklesDoc.Pickles.Parser +using PicklesDoc.Pickles.ObjectModel; + +namespace PicklesDoc.Pickles.Parser.Builders { internal class StepBuilder { diff --git a/src/Pickles/Pickles/Parser/TableBuilder.cs b/src/Pickles/Pickles/Parser/Builders/TableBuilder.cs similarity index 95% rename from src/Pickles/Pickles/Parser/TableBuilder.cs rename to src/Pickles/Pickles/Parser/Builders/TableBuilder.cs index 25610bf79..c07beb2b4 100644 --- a/src/Pickles/Pickles/Parser/TableBuilder.cs +++ b/src/Pickles/Pickles/Parser/Builders/TableBuilder.cs @@ -22,7 +22,9 @@ limitations under the License. using System.Collections.Generic; using System.Linq; -namespace PicklesDoc.Pickles.Parser +using PicklesDoc.Pickles.ObjectModel; + +namespace PicklesDoc.Pickles.Parser.Builders { internal class TableBuilder { diff --git a/src/Pickles/Pickles/Parser/PicklesParser.cs b/src/Pickles/Pickles/Parser/PicklesParser.cs index 9e2fa9538..7cfbd5eaf 100644 --- a/src/Pickles/Pickles/Parser/PicklesParser.cs +++ b/src/Pickles/Pickles/Parser/PicklesParser.cs @@ -25,6 +25,9 @@ limitations under the License. using gherkin.lexer; using java.util; +using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.Parser.Builders; + namespace PicklesDoc.Pickles.Parser { public class PicklesParser : Listener diff --git a/src/Pickles/Pickles/Pickles.csproj b/src/Pickles/Pickles/Pickles.csproj index 5ec2d9cb1..b01fce1b1 100644 --- a/src/Pickles/Pickles/Pickles.csproj +++ b/src/Pickles/Pickles/Pickles.csproj @@ -283,9 +283,9 @@ - + - + @@ -293,22 +293,22 @@ - - + + - - - - + + + + - - - - - + + + + + @@ -331,11 +331,12 @@ + - + diff --git a/src/Pickles/Pickles/Resources/structure.css b/src/Pickles/Pickles/Resources/structure.css index ddac7b31a..b497493db 100644 --- a/src/Pickles/Pickles/Resources/structure.css +++ b/src/Pickles/Pickles/Resources/structure.css @@ -285,3 +285,7 @@ i.passed { margin-top: 0; color: gray; } + +table i.inconclusive, table i.failed, table i.passed { + margin-top: 0.2em; +} \ No newline at end of file diff --git a/src/Pickles/Pickles/Runner.cs b/src/Pickles/Pickles/Runner.cs index 250a9f923..3db509f90 100644 --- a/src/Pickles/Pickles/Runner.cs +++ b/src/Pickles/Pickles/Runner.cs @@ -19,6 +19,7 @@ limitations under the License. #endregion using System; +using System.Linq; using System.Reflection; using Autofac; using NGenerics.DataStructures.Trees; @@ -26,6 +27,7 @@ limitations under the License. using NLog; using PicklesDoc.Pickles.DirectoryCrawler; using PicklesDoc.Pickles.DocumentationBuilders; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using PicklesDoc.Pickles.TestFrameworks; @@ -87,11 +89,36 @@ private static void ApplyTestResultsToFeatures(IContainer container, Configurati private static void SetResultsForIndividualScenariosUnderFeature(FeatureNode featureTreeNode, ITestResults testResults) { - foreach (var scenario in featureTreeNode.Feature.FeatureElements) + foreach (var featureElement in featureTreeNode.Feature.FeatureElements) { - scenario.Result = scenario.GetType().Name == "Scenario" - ? testResults.GetScenarioResult(scenario as Scenario) - : testResults.GetScenarioOutlineResult(scenario as ScenarioOutline); + var scenario = featureElement as Scenario; + + if (scenario != null) + { + featureElement.Result = testResults.GetScenarioResult(scenario); + continue; + } + + var scenarioOutline = featureElement as ScenarioOutline; + + if (scenarioOutline != null) + { + if (testResults.SupportsExampleResults) + { + foreach (var example in scenarioOutline.Examples.SelectMany(e => e.TableArgument.DataRows)) + { + example.Result = testResults.GetExampleResult(scenarioOutline, example.ToArray()); + } + + scenarioOutline.Result = + scenarioOutline.Examples.SelectMany(e => e.TableArgument.DataRows).Select(row => row.Result).Merge(); + } + else + { + featureElement.Result = testResults.GetScenarioOutlineResult(scenarioOutline); + } + continue; + } } } diff --git a/src/Pickles/Pickles/TestFrameworks/CucumberJsonResults.cs b/src/Pickles/Pickles/TestFrameworks/CucumberJsonResults.cs index ede97d217..ad5e4fbae 100644 --- a/src/Pickles/Pickles/TestFrameworks/CucumberJsonResults.cs +++ b/src/Pickles/Pickles/TestFrameworks/CucumberJsonResults.cs @@ -1,16 +1,24 @@ using System; using System.IO.Abstractions; +using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.Parser; + namespace PicklesDoc.Pickles.TestFrameworks { public class CucumberJsonResults : MultipleTestResults { public CucumberJsonResults(Configuration configuration) - : base(configuration) + : base(false, configuration) { } - protected override ITestResults ConstructSingleTestResult(FileInfoBase fileInfo) + public override TestResult GetExampleResult(ScenarioOutline scenario, string[] exampleValues) + { + throw new NotSupportedException(); + } + + protected override ITestResults ConstructSingleTestResult(FileInfoBase fileInfo) { return new CucumberJsonSingleResults(fileInfo); } diff --git a/src/Pickles/Pickles/TestFrameworks/CucumberJsonSingleResults.cs b/src/Pickles/Pickles/TestFrameworks/CucumberJsonSingleResults.cs index 10419ddb3..cbb67aa10 100644 --- a/src/Pickles/Pickles/TestFrameworks/CucumberJsonSingleResults.cs +++ b/src/Pickles/Pickles/TestFrameworks/CucumberJsonSingleResults.cs @@ -6,6 +6,7 @@ using Newtonsoft.Json; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; using Feature = PicklesDoc.Pickles.Parser.JsonResult.Feature; @@ -36,7 +37,7 @@ private List ReadResultsFile(FileInfoBase testResultsFile) #region ITestResults Members - public TestResult GetFeatureResult(Parser.Feature feature) + public TestResult GetFeatureResult(ObjectModel.Feature feature) { var cucumberFeature = this.GetFeatureElement(feature); return this.GetResultFromFeature(cucumberFeature); @@ -59,9 +60,22 @@ public TestResult GetScenarioResult(Scenario scenario) } + public TestResult GetExampleResult(ScenarioOutline scenario, string[] exampleValues) + { + throw new NotSupportedException(); + } + + public bool SupportsExampleResults + { + get + { + return false; + } + } + #endregion - private Feature GetFeatureElement(Parser.Feature feature) + private Feature GetFeatureElement(ObjectModel.Feature feature) { return this.resultsDocument.FirstOrDefault(x => x.name == feature.Name); } diff --git a/src/Pickles/Pickles/TestFrameworks/ITestResults.cs b/src/Pickles/Pickles/TestFrameworks/ITestResults.cs index d80e8ff57..cb93062c8 100644 --- a/src/Pickles/Pickles/TestFrameworks/ITestResults.cs +++ b/src/Pickles/Pickles/TestFrameworks/ITestResults.cs @@ -19,6 +19,8 @@ limitations under the License. #endregion using System; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.TestFrameworks @@ -28,5 +30,8 @@ public interface ITestResults TestResult GetFeatureResult(Feature feature); TestResult GetScenarioOutlineResult(ScenarioOutline scenarioOutline); TestResult GetScenarioResult(Scenario scenario); + TestResult GetExampleResult(ScenarioOutline scenario, string[] exampleValues); + + bool SupportsExampleResults { get; } } } \ No newline at end of file diff --git a/src/Pickles/Pickles/TestFrameworks/MsTestResults.cs b/src/Pickles/Pickles/TestFrameworks/MsTestResults.cs index ff8b84b36..2518e6550 100644 --- a/src/Pickles/Pickles/TestFrameworks/MsTestResults.cs +++ b/src/Pickles/Pickles/TestFrameworks/MsTestResults.cs @@ -21,18 +21,28 @@ limitations under the License. using System; using System.IO.Abstractions; +using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.Parser; + namespace PicklesDoc.Pickles.TestFrameworks { public class MsTestResults : MultipleTestResults { + private static readonly XDocumentLoader DocumentLoader = new XDocumentLoader(); + public MsTestResults(Configuration configuration) - : base(configuration) + : base(false, configuration) + { + } + + public override TestResult GetExampleResult(ScenarioOutline scenario, string[] exampleValues) { + throw new NotSupportedException(); } protected override ITestResults ConstructSingleTestResult(FileInfoBase fileInfo) { - return new MsTestSingleResults(fileInfo); + return new MsTestSingleResults(DocumentLoader.Load(fileInfo)); } } } diff --git a/src/Pickles/Pickles/TestFrameworks/MsTestSingleResults.cs b/src/Pickles/Pickles/TestFrameworks/MsTestSingleResults.cs index f240662ca..0ca2edf74 100644 --- a/src/Pickles/Pickles/TestFrameworks/MsTestSingleResults.cs +++ b/src/Pickles/Pickles/TestFrameworks/MsTestSingleResults.cs @@ -1,10 +1,9 @@ using System; using System.Collections.Generic; -using System.IO.Abstractions; using System.Linq; -using System.Xml; using System.Xml.Linq; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.TestFrameworks @@ -14,21 +13,9 @@ public class MsTestSingleResults : ITestResults private static readonly XNamespace ns = @"http://microsoft.com/schemas/VisualStudio/TeamTest/2010"; private readonly XDocument resultsDocument; - public MsTestSingleResults(FileInfoBase testResultsFile) + public MsTestSingleResults(XDocument resultsDocument) { - this.resultsDocument = this.ReadResultsFile(testResultsFile); - } - - private XDocument ReadResultsFile(FileInfoBase testResultsFile) - { - XDocument document; - using (var stream = testResultsFile.OpenRead()) - { - var xmlReader = XmlReader.Create(stream); - document = XDocument.Load(xmlReader); - stream.Close(); - } - return document; + this.resultsDocument = resultsDocument; } private Guid GetScenarioExecutionId(Scenario queriedScenario) @@ -74,9 +61,18 @@ private static Guid ResultExecutionIdOf(XElement unitTestResult) return new Guid(unitTestResult.Attribute("executionId").Value); } - #region ITestResults Members + public TestResult GetExampleResult(ScenarioOutline scenario, string[] exampleValues) + { + throw new NotSupportedException(); + } - #endregion + public bool SupportsExampleResults + { + get + { + return false; + } + } #region Linq Helpers diff --git a/src/Pickles/Pickles/TestFrameworks/MultipleTestResults.cs b/src/Pickles/Pickles/TestFrameworks/MultipleTestResults.cs index 94159dc79..24c4f354b 100644 --- a/src/Pickles/Pickles/TestFrameworks/MultipleTestResults.cs +++ b/src/Pickles/Pickles/TestFrameworks/MultipleTestResults.cs @@ -3,24 +3,39 @@ using System.IO.Abstractions; using System.Linq; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.TestFrameworks { public abstract class MultipleTestResults : ITestResults { + private readonly bool supportsExampleResults; + private readonly IEnumerable testResults; - protected MultipleTestResults(IEnumerable testResults) + protected MultipleTestResults(bool supportsExampleResults, IEnumerable testResults) { + this.supportsExampleResults = supportsExampleResults; this.testResults = testResults; } - protected MultipleTestResults(Configuration configuration) + protected MultipleTestResults(bool supportsExampleResults, Configuration configuration) { + this.supportsExampleResults = supportsExampleResults; this.testResults = this.GetSingleTestResults(configuration); } + public abstract TestResult GetExampleResult(ScenarioOutline scenario, string[] exampleValues); + + public bool SupportsExampleResults + { + get + { + return supportsExampleResults; + } + } + protected IEnumerable TestResults { get diff --git a/src/Pickles/Pickles/TestFrameworks/NUnitExampleSignatureBuilder.cs b/src/Pickles/Pickles/TestFrameworks/NUnitExampleSignatureBuilder.cs index e4077fd54..14fd43a21 100644 --- a/src/Pickles/Pickles/TestFrameworks/NUnitExampleSignatureBuilder.cs +++ b/src/Pickles/Pickles/TestFrameworks/NUnitExampleSignatureBuilder.cs @@ -21,6 +21,8 @@ limitations under the License. using System; using System.Text; using System.Text.RegularExpressions; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.TestFrameworks diff --git a/src/Pickles/Pickles/TestFrameworks/NUnitResults.cs b/src/Pickles/Pickles/TestFrameworks/NUnitResults.cs index cf9a0c4aa..f3f8a26ec 100644 --- a/src/Pickles/Pickles/TestFrameworks/NUnitResults.cs +++ b/src/Pickles/Pickles/TestFrameworks/NUnitResults.cs @@ -22,14 +22,17 @@ limitations under the License. using System.IO.Abstractions; using System.Linq; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.TestFrameworks { public class NUnitResults : MultipleTestResults { + private static readonly XDocumentLoader DocumentLoader = new XDocumentLoader(); + public NUnitResults(Configuration configuration, NUnitExampleSignatureBuilder exampleSignatureBuilder) - : base(configuration) + : base(true, configuration) { this.SetExampleSignatureBuilder(exampleSignatureBuilder); } @@ -44,10 +47,10 @@ public void SetExampleSignatureBuilder(NUnitExampleSignatureBuilder exampleSigna protected override ITestResults ConstructSingleTestResult(FileInfoBase fileInfo) { - return new NUnitSingleResults(fileInfo); + return new NUnitSingleResults(DocumentLoader.Load(fileInfo)); } - public TestResult GetExampleResult(ScenarioOutline scenarioOutline, string[] arguments) + public override TestResult GetExampleResult(ScenarioOutline scenarioOutline, string[] arguments) { var results = TestResults.OfType().Select(tr => tr.GetExampleResult(scenarioOutline, arguments)).ToArray(); diff --git a/src/Pickles/Pickles/TestFrameworks/NUnitSingleResults.cs b/src/Pickles/Pickles/TestFrameworks/NUnitSingleResults.cs index c484dd206..f0991232b 100644 --- a/src/Pickles/Pickles/TestFrameworks/NUnitSingleResults.cs +++ b/src/Pickles/Pickles/TestFrameworks/NUnitSingleResults.cs @@ -1,10 +1,9 @@ using System; -using System.IO.Abstractions; using System.Linq; using System.Text.RegularExpressions; -using System.Xml; using System.Xml.Linq; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.TestFrameworks @@ -15,9 +14,9 @@ public class NUnitSingleResults : ITestResults private readonly XDocument resultsDocument; - public NUnitSingleResults(FileInfoBase testResultsFile) + public NUnitSingleResults(XDocument resultsDocument) { - this.resultsDocument = this.ReadResultsFile(testResultsFile); + this.resultsDocument = resultsDocument; } #region ITestResults Members @@ -50,6 +49,14 @@ public TestResult GetScenarioResult(Scenario scenario) return this.GetResultFromElement(scenarioElement); } + public bool SupportsExampleResults + { + get + { + return true; + } + } + public TestResult GetScenarioOutlineResult(ScenarioOutline scenarioOutline) { XElement featureElement = this.GetFeatureElement(scenarioOutline.Feature); @@ -61,23 +68,17 @@ public TestResult GetScenarioOutlineResult(ScenarioOutline scenarioOutline) .Where(x => x.Attribute("description") != null) .FirstOrDefault(x => x.Attribute("description").Value == scenarioOutline.Name); } - return this.GetResultFromElement(scenarioOutlineElement); - } - #endregion - - private XDocument ReadResultsFile(FileInfoBase testResultsFile) - { - XDocument document; - using (var stream = testResultsFile.OpenRead()) + if (scenarioOutlineElement != null) { - XmlReader xmlReader = XmlReader.Create(stream); - document = XDocument.Load(xmlReader); - stream.Close(); + return scenarioOutlineElement.Descendants("test-case").Select(GetResultFromElement).Merge(); } - return document; + + return this.GetResultFromElement(scenarioOutlineElement); } + #endregion + private XElement GetFeatureElement(Feature feature) { return this.resultsDocument @@ -130,7 +131,7 @@ private static bool IsAttributeSetToValue(XElement element, string attributeName : false; } - public TestResult GetExampleResult(ScenarioOutline scenarioOutline, string[] row) + public TestResult GetExampleResult(ScenarioOutline scenarioOutline, string[] exampleValues) { XElement featureElement = this.GetFeatureElement(scenarioOutline.Feature); XElement examplesElement = null; @@ -143,7 +144,7 @@ public TestResult GetExampleResult(ScenarioOutline scenarioOutline, string[] row throw new InvalidOperationException("You need to set the ExampleSignatureBuilder before using GetExampleResult."); } - Regex exampleSignature = signatureBuilder.Build(scenarioOutline, row); + Regex exampleSignature = signatureBuilder.Build(scenarioOutline, exampleValues); examplesElement = featureElement .Descendants("test-suite") .Where(x => x.Attribute("description") != null) diff --git a/src/Pickles/Pickles/TestFrameworks/NullTestResults.cs b/src/Pickles/Pickles/TestFrameworks/NullTestResults.cs index 20e635a16..82268cfc2 100644 --- a/src/Pickles/Pickles/TestFrameworks/NullTestResults.cs +++ b/src/Pickles/Pickles/TestFrameworks/NullTestResults.cs @@ -19,6 +19,8 @@ limitations under the License. #endregion using System; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.TestFrameworks @@ -44,9 +46,18 @@ public TestResult GetScenarioResult(Scenario scenario) #endregion - public TestResult GetExampleResult(ScenarioOutline scenarioOutline, string[] row) + public TestResult GetExampleResult(ScenarioOutline scenarioOutline, string[] exampleValues) { return new TestResult(); } + + + public bool SupportsExampleResults + { + get + { + return false; + } + } } } \ No newline at end of file diff --git a/src/Pickles/Pickles/TestFrameworks/SpecRunResults.cs b/src/Pickles/Pickles/TestFrameworks/SpecRunResults.cs index 407420722..ecf8b5a95 100644 --- a/src/Pickles/Pickles/TestFrameworks/SpecRunResults.cs +++ b/src/Pickles/Pickles/TestFrameworks/SpecRunResults.cs @@ -21,13 +21,21 @@ limitations under the License. using System; using System.IO.Abstractions; +using PicklesDoc.Pickles.ObjectModel; +using PicklesDoc.Pickles.Parser; + namespace PicklesDoc.Pickles.TestFrameworks { public class SpecRunResults : MultipleTestResults { public SpecRunResults(Configuration configuration) - : base(configuration) + : base(false, configuration) + { + } + + public override TestResult GetExampleResult(ScenarioOutline scenario, string[] exampleValues) { + throw new NotSupportedException(); } protected override ITestResults ConstructSingleTestResult(FileInfoBase fileInfo) diff --git a/src/Pickles/Pickles/TestFrameworks/SpecRunSingleResults.cs b/src/Pickles/Pickles/TestFrameworks/SpecRunSingleResults.cs index 7c07cb2ce..7e960ce79 100644 --- a/src/Pickles/Pickles/TestFrameworks/SpecRunSingleResults.cs +++ b/src/Pickles/Pickles/TestFrameworks/SpecRunSingleResults.cs @@ -5,6 +5,8 @@ using System.Xml; using System.Xml.Linq; +using PicklesDoc.Pickles.ObjectModel; + using Gherkin = PicklesDoc.Pickles.Parser; using SpecRun = PicklesDoc.Pickles.Parser.SpecRun; @@ -21,7 +23,7 @@ public SpecRunSingleResults(FileInfoBase fileInfo) this.specRunFeatures = resultsDocument.Descendants("feature").Select(SpecRun.Factory.ToSpecRunFeature).ToList(); } - public TestResult GetFeatureResult(Gherkin.Feature feature) + public TestResult GetFeatureResult(Feature feature) { if (this.specRunFeatures == null) { @@ -40,7 +42,7 @@ public TestResult GetFeatureResult(Gherkin.Feature feature) return result; } - public TestResult GetScenarioOutlineResult(Gherkin.ScenarioOutline scenarioOutline) + public TestResult GetScenarioOutlineResult(ScenarioOutline scenarioOutline) { if (this.specRunFeatures == null) { @@ -66,7 +68,7 @@ public TestResult GetScenarioOutlineResult(Gherkin.ScenarioOutline scenarioOutli return result; } - public TestResult GetScenarioResult(Gherkin.Scenario scenario) + public TestResult GetScenarioResult(Scenario scenario) { if (this.specRunFeatures == null) { @@ -90,7 +92,21 @@ public TestResult GetScenarioResult(Gherkin.Scenario scenario) return StringToTestResult(specRunScenario.Result); } - private static TestResult StringsToTestResult(IEnumerable results) + public TestResult GetExampleResult(ScenarioOutline scenario, string[] exampleValues) + { + throw new NotSupportedException(); + } + + + public bool SupportsExampleResults + { + get + { + return false; + } + } + + private static TestResult StringsToTestResult(IEnumerable results) { if (results == null) { @@ -126,19 +142,19 @@ private static TestResult StringToTestResult(string result) } } - private static SpecRun.Scenario[] FindSpecRunScenarios(Gherkin.ScenarioOutline scenarioOutline, SpecRun.Feature specRunFeature) + private static SpecRun.Scenario[] FindSpecRunScenarios(ScenarioOutline scenarioOutline, SpecRun.Feature specRunFeature) { return specRunFeature.Scenarios.Where(d => d.Title.StartsWith(scenarioOutline.Name + ", ")).ToArray(); } - private static SpecRun.Scenario FindSpecRunScenario(Gherkin.Scenario scenario, SpecRun.Feature specRunFeature) + private static SpecRun.Scenario FindSpecRunScenario(Scenario scenario, SpecRun.Feature specRunFeature) { SpecRun.Scenario result = specRunFeature.Scenarios.FirstOrDefault(d => d.Title.Equals(scenario.Name)); return result; } - private SpecRun.Feature FindSpecRunFeature(Gherkin.Feature feature) + private SpecRun.Feature FindSpecRunFeature(Feature feature) { return this.specRunFeatures.FirstOrDefault(specRunFeature => specRunFeature.Title == feature.Name); } diff --git a/src/Pickles/Pickles/TestFrameworks/XDocumentLoader.cs b/src/Pickles/Pickles/TestFrameworks/XDocumentLoader.cs new file mode 100644 index 000000000..55b2ca564 --- /dev/null +++ b/src/Pickles/Pickles/TestFrameworks/XDocumentLoader.cs @@ -0,0 +1,41 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright 2011 Jeffrey Cameron +// Copyright 2012-present PicklesDoc team and community contributors +// +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// -------------------------------------------------------------------------------------------------------------------- + +using System.IO.Abstractions; +using System.Xml; +using System.Xml.Linq; + +namespace PicklesDoc.Pickles.TestFrameworks +{ + public class XDocumentLoader + { + public XDocument Load(FileInfoBase fileInfo) + { + XDocument document; + using (var stream = fileInfo.OpenRead()) + { + XmlReader xmlReader = XmlReader.Create(stream); + document = XDocument.Load(xmlReader); + stream.Close(); + } + return document; + } + } +} \ No newline at end of file diff --git a/src/Pickles/Pickles/TestFrameworks/XUnitResults.cs b/src/Pickles/Pickles/TestFrameworks/XUnitResults.cs index c6bddfce2..c4ec14fa1 100644 --- a/src/Pickles/Pickles/TestFrameworks/XUnitResults.cs +++ b/src/Pickles/Pickles/TestFrameworks/XUnitResults.cs @@ -21,14 +21,17 @@ using System.IO.Abstractions; using System.Linq; +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.TestFrameworks { public class XUnitResults : MultipleTestResults { + private static readonly XDocumentLoader DocumentLoader = new XDocumentLoader(); + public XUnitResults(Configuration configuration, xUnitExampleSignatureBuilder exampleSignatureBuilder) - : base(configuration) + : base(true, configuration) { this.SetExampleSignatureBuilder(exampleSignatureBuilder); } @@ -43,10 +46,10 @@ public void SetExampleSignatureBuilder(xUnitExampleSignatureBuilder exampleSigna protected override ITestResults ConstructSingleTestResult(FileInfoBase fileInfo) { - return new XUnitSingleResults(fileInfo); + return new XUnitSingleResults(DocumentLoader.Load(fileInfo)); } - public TestResult GetExampleResult(ScenarioOutline scenarioOutline, string[] arguments) + public override TestResult GetExampleResult(ScenarioOutline scenarioOutline, string[] arguments) { var results = TestResults.OfType().Select(tr => tr.GetExampleResult(scenarioOutline, arguments)).ToArray(); diff --git a/src/Pickles/Pickles/TestFrameworks/XUnitSingleResults.cs b/src/Pickles/Pickles/TestFrameworks/XUnitSingleResults.cs index b4d45390e..218fa1004 100644 --- a/src/Pickles/Pickles/TestFrameworks/XUnitSingleResults.cs +++ b/src/Pickles/Pickles/TestFrameworks/XUnitSingleResults.cs @@ -20,11 +20,11 @@ limitations under the License. using System; using System.Collections.Generic; -using System.IO.Abstractions; using System.Linq; using System.Text.RegularExpressions; -using System.Xml; using System.Xml.Linq; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.TestFrameworks @@ -35,9 +35,9 @@ public class XUnitSingleResults : ITestResults private readonly XDocument resultsDocument; - public XUnitSingleResults(FileInfoBase testResultsFile) + public XUnitSingleResults(XDocument resultsDocument) { - this.resultsDocument = this.ReadResultsFile(testResultsFile); + this.resultsDocument = resultsDocument; } #region ITestResults Members @@ -80,19 +80,7 @@ public TestResult GetScenarioResult(Scenario scenario) #endregion - private XDocument ReadResultsFile(FileInfoBase testResultFile) - { - XDocument document; - using (var stream = testResultFile.OpenRead()) - { - XmlReader xmlReader = XmlReader.Create(stream); - document = XDocument.Load(xmlReader); - stream.Close(); - } - return document; - } - - private XElement GetFeatureElement(Feature feature) + private XElement GetFeatureElement(Feature feature) { IEnumerable featureQuery = from clazz in this.resultsDocument.Root.Descendants("class") @@ -169,7 +157,7 @@ private static TestResult GetAggregateResult(int passedCount, int failedCount, i return result; } - public TestResult GetExampleResult(ScenarioOutline scenarioOutline, string[] row) + public TestResult GetExampleResult(ScenarioOutline scenarioOutline, string[] exampleValues) { IEnumerable exampleElements = this.GetScenarioOutlineElements(scenarioOutline); @@ -183,7 +171,7 @@ public TestResult GetExampleResult(ScenarioOutline scenarioOutline, string[] row foreach (XElement exampleElement in exampleElements) { - Regex signature = signatureBuilder.Build(scenarioOutline, row); + Regex signature = signatureBuilder.Build(scenarioOutline, exampleValues); if (signature.IsMatch(exampleElement.Attribute("name").Value.ToLowerInvariant())) { return this.GetResultFromElement(exampleElement); @@ -191,5 +179,13 @@ public TestResult GetExampleResult(ScenarioOutline scenarioOutline, string[] row } return result; } + + public bool SupportsExampleResults + { + get + { + return true; + } + } } } \ No newline at end of file diff --git a/src/Pickles/Pickles/TestFrameworks/xUnitExampleSignatureBuilder.cs b/src/Pickles/Pickles/TestFrameworks/xUnitExampleSignatureBuilder.cs index eb39953ab..6ea4294d3 100644 --- a/src/Pickles/Pickles/TestFrameworks/xUnitExampleSignatureBuilder.cs +++ b/src/Pickles/Pickles/TestFrameworks/xUnitExampleSignatureBuilder.cs @@ -21,6 +21,8 @@ limitations under the License. using System; using System.Text; using System.Text.RegularExpressions; + +using PicklesDoc.Pickles.ObjectModel; using PicklesDoc.Pickles.Parser; namespace PicklesDoc.Pickles.TestFrameworks