I'm new to TDD and xUnit so I want to test my method that looks something like:
List<T> DeleteElements<T>(this List<T> a, List<T> b);
Is there any Assert method that I can use ? I think something like this would be nice
List<int> values = new List<int>() { 1, 2, 3 }; List<int> expected = new List<int>() { 1 }; List<int> actual = values.DeleteElements(new List<int>() { 2, 3 }); Assert.Exact(expected, actual);
Is there something like this ?
You'll have to implement IEquatable<T> for your objects, and then Assert. Equals will work. Assert. Same() compares by reference; it asserts that Obj1 and Obj2 are the same object rather than just looking the same.
In xUnit and many other testing frameworks, assertion is the mean that we conduct our test. In other word we assert an expectation that something is true about a piece of code. There are many different types of assertion in xUnit that we can use.
Testing a positive case This method is decorated with the Fact attribute, which tells xUnit that this is a test.
I recommend using FluentAssertions. It has a vast IntelliSense-friendly assertion library for many use cases including collections
collection.Should().Equal(1, 2, 5, 8); collection.Should().NotEqual(8, 2, 3, 5); collection.Should().BeEquivalentTo(8, 2, 1, 5);
xUnit.Net recognizes collections so you just need to do
Assert.Equal(expected, actual); // Order is important
You can see other available collection assertions in CollectionAsserts.cs
For NUnit library collection comparison methods are
CollectionAssert.AreEqual(IEnumerable, IEnumerable) // For sequences, order matters
and
CollectionAssert.AreEquivalent(IEnumerable, IEnumerable) // For sets, order doesn't matter
More details here: CollectionAssert
MbUnit also has collection assertions similar to NUnit: Assert.Collections.cs
In the current version of XUnit (1.5) you can just use
Assert.Equal(expected, actual);
The above method will do an element by element comparison of the two lists. I'm not sure if this works for any prior version.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With