diff --git a/TechTalk.SpecFlow/Assist/SetComparer.cs b/TechTalk.SpecFlow/Assist/SetComparer.cs index 9cd174467..e51d57d00 100644 --- a/TechTalk.SpecFlow/Assist/SetComparer.cs +++ b/TechTalk.SpecFlow/Assist/SetComparer.cs @@ -8,7 +8,7 @@ public class SetComparer { private const int MatchNotFound = -1; private readonly Table table; - private List actualItems; + private List> extraOrNonMatchingActualItems; private readonly ITableDiffExceptionBuilder tableDiffExceptionBuilder; public SetComparer(Table table) @@ -25,19 +25,24 @@ private SafetyTableDiffExceptionBuilder BuildTheTableDiffExceptionBuilder() return makeSureTheFormattingWorkAboveDoesNotResultInABadException; } - public void CompareToSet(IEnumerable set) + public void CompareToSet(IEnumerable set, bool sequentialEquality) { AssertThatAllColumnsInTheTableMatchToPropertiesOnTheType(); if (ThereAreNoResultsAndNoExpectedResults(set)) return; + var getListOfExpectedItemsThatCouldNotBeFound = + sequentialEquality ? + new Func, IEnumerable>(GetListOfExpectedItemsThatCouldNotBeFoundOrderSensitive) : + new Func, IEnumerable>(GetListOfExpectedItemsThatCouldNotBeFoundOrderInsensitive); + if (ThereAreResultsWhenThereShouldBeNone(set)) - ThrowAnExpectedNoResultsError(set, GetListOfExpectedItemsThatCouldNotBeFound(set)); + ThrowAnExpectedNoResultsError(set, getListOfExpectedItemsThatCouldNotBeFound(set)); - AssertThatTheItemsMatchTheExpectedResults(set); + AssertThatTheItemsMatchTheExpectedResults(set, getListOfExpectedItemsThatCouldNotBeFound); - AssertThatNoExtraRowsExist(set, GetListOfExpectedItemsThatCouldNotBeFound(set)); + AssertThatNoExtraRowsExist(set, getListOfExpectedItemsThatCouldNotBeFound(set)); } private void AssertThatNoExtraRowsExist(IEnumerable set, IEnumerable listOfMissingItems) @@ -62,17 +67,17 @@ private bool ThereAreNoResultsAndNoExpectedResults(IEnumerable set) return !set.Any() && !table.Rows.Any(); } - private void AssertThatTheItemsMatchTheExpectedResults(IEnumerable set) + private void AssertThatTheItemsMatchTheExpectedResults(IEnumerable set, Func, IEnumerable> getListOfExpectedItemsThatCouldNotBeFound) { - var listOfMissingItems = GetListOfExpectedItemsThatCouldNotBeFound(set); + var listOfMissingItems = getListOfExpectedItemsThatCouldNotBeFound(set); if (ExpectedItemsCouldNotBeFound(listOfMissingItems)) ThrowAnErrorDetailingWhichItemsAreMissing(listOfMissingItems); } - private IEnumerable GetListOfExpectedItemsThatCouldNotBeFound(IEnumerable set) + private IEnumerable GetListOfExpectedItemsThatCouldNotBeFoundOrderInsensitive(IEnumerable set) { - actualItems = GetTheActualItems(set); + var actualItems = GetTheActualItems(set); var listOfMissingItems = new List(); @@ -89,12 +94,37 @@ private IEnumerable GetListOfExpectedItemsThatCouldNotBeFound(IEnumerable new TableDifferenceItem(i)).ToList(); + return listOfMissingItems; + } + + private IEnumerable GetListOfExpectedItemsThatCouldNotBeFoundOrderSensitive(IEnumerable set) + { + var actualItems = GetTheActualItems(set); + + var listOfMissingItems = new List(); + + var pivotTable = new PivotTable(table); + + for (var index = 0; index < Math.Min(actualItems.Count, table.Rows.Count()); index++) + { + var instanceTable = pivotTable.GetInstanceTable(index); + if (!ThisItemIsAMatch(instanceTable, actualItems[index])) + listOfMissingItems.Add(index + 1); + } + + extraOrNonMatchingActualItems = + listOfMissingItems.Select(index => new TableDifferenceItem(actualItems[index-1], index)).Concat( + actualItems.Skip(table.RowCount).Select(i => new TableDifferenceItem(i))) + .ToList(); + return listOfMissingItems; } private void ThrowAnErrorDetailingWhichItemsAreMissing(IEnumerable listOfMissingItems) { - var message = tableDiffExceptionBuilder.GetTheTableDiffExceptionMessage(new TableDifferenceResults(table, listOfMissingItems, actualItems)); + var message = tableDiffExceptionBuilder.GetTheTableDiffExceptionMessage(new TableDifferenceResults(table, listOfMissingItems, extraOrNonMatchingActualItems)); throw new ComparisonException("\r\n" + message); } diff --git a/TechTalk.SpecFlow/Assist/SetComparisonExtensionMethods.cs b/TechTalk.SpecFlow/Assist/SetComparisonExtensionMethods.cs index cfad6a229..512b0e356 100644 --- a/TechTalk.SpecFlow/Assist/SetComparisonExtensionMethods.cs +++ b/TechTalk.SpecFlow/Assist/SetComparisonExtensionMethods.cs @@ -4,10 +4,10 @@ namespace TechTalk.SpecFlow.Assist { public static class SetComparisonExtensionMethods { - public static void CompareToSet(this Table table, IEnumerable set) + public static void CompareToSet(this Table table, IEnumerable set, bool sequentialEquality = false) { var checker = new SetComparer(table); - checker.CompareToSet(set); + checker.CompareToSet(set, sequentialEquality); } } } \ No newline at end of file diff --git a/TechTalk.SpecFlow/Assist/TableDiffExceptionBuilder.cs b/TechTalk.SpecFlow/Assist/TableDiffExceptionBuilder.cs index 4c044c011..ed81e08cd 100644 --- a/TechTalk.SpecFlow/Assist/TableDiffExceptionBuilder.cs +++ b/TechTalk.SpecFlow/Assist/TableDiffExceptionBuilder.cs @@ -24,20 +24,29 @@ public string GetTheTableDiffExceptionMessage(TableDifferenceResults tableDif if (tableDifferenceResults.IndexesOfTableRowsThatWereNotMatched.Contains(index)) prefix = "- "; realData.AppendLine(prefix + line); + + var missingIndexedItem = tableDifferenceResults.ItemsInTheDataThatWereNotFoundInTheTable.FirstOrDefault(i => i.Index == index); + if (missingIndexedItem != null) + AppendExtraLineText(tableDifferenceResults, missingIndexedItem, realData); index++; } - foreach (var item in tableDifferenceResults.ItemsInTheDataThatWereNotFoundInTheTable) + foreach (var item in tableDifferenceResults.ItemsInTheDataThatWereNotFoundInTheTable.Where(i => !i.IsIndexSpecific)) { - var line = "+ |"; - foreach (var header in tableDifferenceResults.Table.Header) - line += $" {GetTheValue(item, header)} |"; - realData.AppendLine(line); + AppendExtraLineText(tableDifferenceResults, item, realData); } return realData.ToString(); } + private void AppendExtraLineText(TableDifferenceResults tableDifferenceResults, TableDifferenceItem item, StringBuilder realData) + { + var line = "+ |"; + foreach (var header in tableDifferenceResults.Table.Header) + line += $" {GetTheValue(item.Item, header)} |"; + realData.AppendLine(line); + } + private static object GetTheValue(T item, string header) { var propertyValue = item.GetPropertyValue(header); diff --git a/TechTalk.SpecFlow/Assist/TableDifferenceItem.cs b/TechTalk.SpecFlow/Assist/TableDifferenceItem.cs new file mode 100644 index 000000000..b28ee8811 --- /dev/null +++ b/TechTalk.SpecFlow/Assist/TableDifferenceItem.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TechTalk.SpecFlow.Assist +{ + public class TableDifferenceItem + { + public TT Item { get; private set; } + public int? Index { get; private set; } + + public bool IsIndexSpecific => Index != null; + + public TableDifferenceItem(TT item, int? index = null) + { + Item = item; + Index = index; + } + } +} diff --git a/TechTalk.SpecFlow/Assist/TableDifferenceResults.cs b/TechTalk.SpecFlow/Assist/TableDifferenceResults.cs index c28e3546b..a590cca48 100644 --- a/TechTalk.SpecFlow/Assist/TableDifferenceResults.cs +++ b/TechTalk.SpecFlow/Assist/TableDifferenceResults.cs @@ -1,10 +1,11 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; namespace TechTalk.SpecFlow.Assist { public class TableDifferenceResults { - public TableDifferenceResults(Table table, IEnumerable indexesOfTableRowsThatWereNotMatched, IEnumerable itemsInTheDataThatWereNotFoundInTheTable) + public TableDifferenceResults(Table table, IEnumerable indexesOfTableRowsThatWereNotMatched, IEnumerable> itemsInTheDataThatWereNotFoundInTheTable) { this.Table = table; this.IndexesOfTableRowsThatWereNotMatched = indexesOfTableRowsThatWereNotMatched; @@ -15,6 +16,6 @@ public TableDifferenceResults(Table table, IEnumerable indexesOfTableRowsTh public IEnumerable IndexesOfTableRowsThatWereNotMatched { get; } - public IEnumerable ItemsInTheDataThatWereNotFoundInTheTable { get; } + public IEnumerable> ItemsInTheDataThatWereNotFoundInTheTable { get; } } } \ No newline at end of file diff --git a/TechTalk.SpecFlow/TechTalk.SpecFlow.csproj b/TechTalk.SpecFlow/TechTalk.SpecFlow.csproj index 978f2e3c1..fb48925bf 100644 --- a/TechTalk.SpecFlow/TechTalk.SpecFlow.csproj +++ b/TechTalk.SpecFlow/TechTalk.SpecFlow.csproj @@ -59,6 +59,7 @@ + diff --git a/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/SetComparisonExtensionMethods_MessageTests.cs b/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/SetComparisonExtensionMethods_MessageTests.cs index b8a812371..352b28d02 100644 --- a/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/SetComparisonExtensionMethods_MessageTests.cs +++ b/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/SetComparisonExtensionMethods_MessageTests.cs @@ -5,8 +5,7 @@ namespace TechTalk.SpecFlow.RuntimeTests.AssistTests { - [TestFixture] - public class SetComparisonExtensionMethods_MessageTests + public abstract class SetComparisonExtensionMethods_MessageTests { [Test] public void Returns_the_names_of_any_fields_that_do_not_exist() @@ -98,31 +97,6 @@ public void Returns_2_as_the_missing_item_when_the_second_item_does_not_match() ".AgnosticLineBreak()); } - [Test] - public void Returns_both_1_and_two_as_the_missing_items_when_both_cannot_be_found() - { - var table = new Table("StringProperty"); - table.AddRow("orange"); - table.AddRow("apple"); - - var items = new[] - { - new SetComparisonTestObject {StringProperty = "rotten orange"}, - new SetComparisonTestObject {StringProperty = "rotten apple"} - }; - - var exception = GetTheExceptionThrowByComparingThese(table, items); - - exception.Message.AgnosticLineBreak().Should().Be( - @" - | StringProperty | -- | orange | -- | apple | -+ | rotten orange | -+ | rotten apple | -".AgnosticLineBreak()); - } - [Test] public void Returns_a_descriptive_error_when_three_results_exist_when_two_expected() { @@ -170,11 +144,11 @@ public void Returns_a_descriptive_error_when_three_results_exist_when_one_expect ".AgnosticLineBreak()); } - private static ComparisonException GetTheExceptionThrowByComparingThese(Table table, SetComparisonTestObject[] items) + protected ComparisonException GetTheExceptionThrowByComparingThese(Table table, SetComparisonTestObject[] items) { try { - table.CompareToSet(items); + CallComparison(table, items); } catch (ComparisonException ex) { @@ -182,5 +156,75 @@ private static ComparisonException GetTheExceptionThrowByComparingThese(Table ta } return null; } + + protected abstract void CallComparison(Table table, SetComparisonTestObject[] items); + } + + [TestFixture] + public class SetComparisonExtensionMethods_OrderInsensitive_MessageTests : SetComparisonExtensionMethods_MessageTests + { + [Test] + public void Returns_both_1_and_two_as_the_missing_items_when_both_cannot_be_found() + { + var table = new Table("StringProperty"); + table.AddRow("orange"); + table.AddRow("apple"); + + var items = new[] + { + new SetComparisonTestObject {StringProperty = "rotten orange"}, + new SetComparisonTestObject {StringProperty = "rotten apple"} + }; + + var exception = GetTheExceptionThrowByComparingThese(table, items); + + exception.Message.AgnosticLineBreak().Should().Be( + @" + | StringProperty | +- | orange | +- | apple | ++ | rotten orange | ++ | rotten apple | +".AgnosticLineBreak()); + } + + protected override void CallComparison(Table table, SetComparisonTestObject[] items) + { + table.CompareToSet(items); + } + } + + [TestFixture] + public class SetComparisonExtensionMethods_OrderSensitive_MessageTests : SetComparisonExtensionMethods_MessageTests + { + [Test] + public void Returns_both_1_and_two_as_the_missing_items_when_both_cannot_be_found() + { + var table = new Table("StringProperty"); + table.AddRow("orange"); + table.AddRow("apple"); + + var items = new[] + { + new SetComparisonTestObject {StringProperty = "rotten orange"}, + new SetComparisonTestObject {StringProperty = "rotten apple"} + }; + + var exception = GetTheExceptionThrowByComparingThese(table, items); + + exception.Message.AgnosticLineBreak().Should().Be( + @" + | StringProperty | +- | orange | ++ | rotten orange | +- | apple | ++ | rotten apple | +".AgnosticLineBreak()); + } + + protected override void CallComparison(Table table, SetComparisonTestObject[] items) + { + table.CompareToSet(items, sequentialEquality: true); + } } } \ No newline at end of file diff --git a/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/SetComparisonExtensionMethods_ThrowTests.cs b/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/SetComparisonExtensionMethods_ThrowTests.cs index b2aa04158..1da8f4b57 100644 --- a/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/SetComparisonExtensionMethods_ThrowTests.cs +++ b/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/SetComparisonExtensionMethods_ThrowTests.cs @@ -8,8 +8,7 @@ namespace TechTalk.SpecFlow.RuntimeTests.AssistTests { - [TestFixture] - public class SetComparisonExtensionMethods_ThrowTests + public abstract class SetComparisonExtensionMethods_ThrowTests { [SetUp] public void SetUp() @@ -270,26 +269,6 @@ public void Does_not_throw_exception_if_two_items_in_both_sets_match() comparisonResult.ExceptionWasThrown.Should().BeFalse(comparisonResult.ExceptionMessage); } - [Test] - public void Does_not_throw_exception_if_all_items_match_but_not_in_the_same_order() - { - var table = new Table("StringProperty"); - table.AddRow("relish"); - table.AddRow("mustard"); - table.AddRow("ketchup"); - - var items = new[] - { - new SetComparisonTestObject {StringProperty = "ketchup"}, - new SetComparisonTestObject {StringProperty = "relish"}, - new SetComparisonTestObject {StringProperty = "mustard"} - }; - - var comparisonResult = DetermineIfExceptionWasThrownByComparingThese(table, items); - - comparisonResult.ExceptionWasThrown.Should().BeFalse(comparisonResult.ExceptionMessage); - } - [Test] public void Throws_an_exception_if_items_do_not_match_the_correct_number_of_times() { @@ -345,12 +324,12 @@ public void Can_compare_guids_properly() comparisonResult.ExceptionWasThrown.Should().BeFalse(comparisonResult.ExceptionMessage); } - private static ComparisonTestResult DetermineIfExceptionWasThrownByComparingThese(Table table, SetComparisonTestObject[] items) + protected ComparisonTestResult DetermineIfExceptionWasThrownByComparingThese(Table table, SetComparisonTestObject[] items) { var result = new ComparisonTestResult { ExceptionWasThrown = false }; try { - table.CompareToSet(items); + CallComparison(table, items); } catch (ComparisonException ex) { @@ -359,5 +338,65 @@ private static ComparisonTestResult DetermineIfExceptionWasThrownByComparingThes } return result; } + + protected abstract void CallComparison(Table table, SetComparisonTestObject[] items); + } + + [TestFixture] + public class SetComparisonExtensionMethods_OrderInsensitive_ThrowTests : SetComparisonExtensionMethods_ThrowTests + { + [Test] + public void Does_not_throw_exception_if_all_items_match_but_not_in_the_same_order() + { + var table = new Table("StringProperty"); + table.AddRow("relish"); + table.AddRow("mustard"); + table.AddRow("ketchup"); + + var items = new[] + { + new SetComparisonTestObject {StringProperty = "ketchup"}, + new SetComparisonTestObject {StringProperty = "relish"}, + new SetComparisonTestObject {StringProperty = "mustard"} + }; + + var comparisonResult = DetermineIfExceptionWasThrownByComparingThese(table, items); + + comparisonResult.ExceptionWasThrown.Should().BeFalse(comparisonResult.ExceptionMessage); + } + + protected override void CallComparison(Table table, SetComparisonTestObject[] items) + { + table.CompareToSet(items); + } + } + + [TestFixture] + public class SetComparisonExtensionMethods_OrderSensitive_ThrowTests : SetComparisonExtensionMethods_ThrowTests + { + [Test] + public void Throws_an_exception_if_all_items_match_but_not_in_the_same_order() + { + var table = new Table("StringProperty"); + table.AddRow("relish"); + table.AddRow("mustard"); + table.AddRow("ketchup"); + + var items = new[] + { + new SetComparisonTestObject {StringProperty = "ketchup"}, + new SetComparisonTestObject {StringProperty = "relish"}, + new SetComparisonTestObject {StringProperty = "mustard"} + }; + + var comparisonResult = DetermineIfExceptionWasThrownByComparingThese(table, items); + + comparisonResult.ExceptionWasThrown.Should().BeTrue(comparisonResult.ExceptionMessage); + } + + protected override void CallComparison(Table table, SetComparisonTestObject[] items) + { + table.CompareToSet(items, sequentialEquality: true); + } } } \ No newline at end of file diff --git a/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/TableDiffExceptionBuilderTests.cs b/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/TableDiffExceptionBuilderTests.cs index e5759a146..1387966fb 100644 --- a/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/TableDiffExceptionBuilderTests.cs +++ b/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/TableDiffExceptionBuilderTests.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using NUnit.Framework; using FluentAssertions; using TechTalk.SpecFlow.Assist; @@ -15,7 +16,7 @@ public void Adds_a_two_character_prefix_to_the_table() var builder = new TableDiffExceptionBuilder(); - var tableDifferenceResults = new TableDifferenceResults(table, new int[] {}, new TestObject[] {}); + var tableDifferenceResults = new TableDifferenceResults(table, new int[] {}, GetEmptyMissingItemsList()); var message = builder.GetTheTableDiffExceptionMessage(tableDifferenceResults); message.AgnosticLineBreak().Should().Be(@" | One | Two | Three | @@ -33,7 +34,7 @@ public void Prepends_a_dash_next_to_any_table_rows_that_were_missing() var builder = new TableDiffExceptionBuilder(); - var tableDifferenceResults = new TableDifferenceResults(table, new[] {2, 3}, new TestObject[] {}); + var tableDifferenceResults = new TableDifferenceResults(table, new[] {2, 3}, GetEmptyMissingItemsList()); var message = builder.GetTheTableDiffExceptionMessage(tableDifferenceResults); message.AgnosticLineBreak().Should().Be(@" | One | Two | Three | @@ -44,6 +45,16 @@ public void Prepends_a_dash_next_to_any_table_rows_that_were_missing() ".AgnosticLineBreak()); } + private TableDifferenceItem[] GetEmptyMissingItemsList() + { + return new TableDifferenceItem[0]; + } + + private TableDifferenceItem[] GetMissingItemsList(TestObject[] items) + { + return items.Select(i => new TableDifferenceItem(i)).ToArray(); + } + [Test] public void Appends_remaining_items_to_the_bottom_of_the_table_with_plus_prefix() { @@ -57,7 +68,7 @@ public void Appends_remaining_items_to_the_bottom_of_the_table_with_plus_prefix( new TestObject {One = "A", Two = 1, Three = "Z"}, new TestObject {One = "B1", Two = 1234567, Three = "ZYXW"} }; - var tableDifferenceResults = new TableDifferenceResults(table, new int[] {}, remainingItems); + var tableDifferenceResults = new TableDifferenceResults(table, new int[] {}, GetMissingItemsList(remainingItems)); var message = builder.GetTheTableDiffExceptionMessage(tableDifferenceResults); message.AgnosticLineBreak().Should().Be(@" | One | Two | Three | @@ -80,7 +91,7 @@ public void Can_append_lines_that_contain_nulls() new TestObject {One = "A", Two = 1, Three = "Z"}, new TestObject {One = null, Two = null, Three = null} }; - var tableDifferenceResults = new TableDifferenceResults(table, new int[] {}, remainingItems); + var tableDifferenceResults = new TableDifferenceResults(table, new int[] {}, GetMissingItemsList(remainingItems)); var message = builder.GetTheTableDiffExceptionMessage(tableDifferenceResults); message.AgnosticLineBreak().Should().Be(@" | One | Two | Three | @@ -102,7 +113,7 @@ public void Uses_smart_matching_on_column_names() { new TestObject {One = "A", Two = 1, TheFourthProperty = "Z"}, }; - var tableDifferenceResults = new TableDifferenceResults(table, new int[] {}, remainingItems); + var tableDifferenceResults = new TableDifferenceResults(table, new int[] {}, GetMissingItemsList(remainingItems)); var message = builder.GetTheTableDiffExceptionMessage(tableDifferenceResults); message.AgnosticLineBreak().Should().Be(@" | one | TWO | The fourth property | @@ -123,7 +134,7 @@ public void It_should_report_the_enumerables_as_lists() { new TestObject {Doubles = new [] {1D, 2D, 5D}}, }; - var tableDifferenceResults = new TableDifferenceResults(table, new int[] {}, remainingItems); + var tableDifferenceResults = new TableDifferenceResults(table, new int[] {}, GetMissingItemsList(remainingItems)); var message = builder.GetTheTableDiffExceptionMessage(tableDifferenceResults); message.Should().NotContain("System.Double[]"); @@ -142,7 +153,7 @@ public void It_should_treat_nulls_as_empty_spots() { new TestObject {Objects = new object[] {1,null,"2","d"}}, }; - var tableDifferenceResults = new TableDifferenceResults(table, new int[] {}, remainingItems); + var tableDifferenceResults = new TableDifferenceResults(table, new int[] {}, GetMissingItemsList(remainingItems)); var message = builder.GetTheTableDiffExceptionMessage(tableDifferenceResults); message.Should().NotContain("Object[]"); diff --git a/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/TestInfrastructure/ComparisonTestResult.cs b/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/TestInfrastructure/ComparisonTestResult.cs index ac22dd421..6dcbb7b16 100644 --- a/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/TestInfrastructure/ComparisonTestResult.cs +++ b/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/TestInfrastructure/ComparisonTestResult.cs @@ -1,6 +1,6 @@ namespace TechTalk.SpecFlow.RuntimeTests.AssistTests.TestInfrastructure { - class ComparisonTestResult + public class ComparisonTestResult { public bool ExceptionWasThrown { get; set; } public string ExceptionMessage { get; set; } diff --git a/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/TestInfrastructure/SetComparisonTestObject.cs b/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/TestInfrastructure/SetComparisonTestObject.cs index 656ae9d8c..3e0ceb004 100644 --- a/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/TestInfrastructure/SetComparisonTestObject.cs +++ b/Tests/TechTalk.SpecFlow.RuntimeTests/AssistTests/TestInfrastructure/SetComparisonTestObject.cs @@ -2,7 +2,7 @@ namespace TechTalk.SpecFlow.RuntimeTests.AssistTests.TestInfrastructure { - class SetComparisonTestObject + public class SetComparisonTestObject { public string StringProperty { get; set; } public int IntProperty { get; set; }