A unit test generation extension for Visual Studio that aims to always produce code that compiles - covering the basic cases automatically and preparing as much as it can for the complex cases.
Get the extension from the Visual Studio Marketplace:
Alternatively see the releases on GitHub:
Demonstrates the tests generated for a simple primary constructor record type
public record RecordType(string StringProperty, int IntProperty);
public class RecordTypeTests
{
private readonly RecordType _testClass;
private string _stringProperty;
private int _intProperty;
public RecordTypeTests()
{
_stringProperty = "TestValue534011718";
_intProperty = 237820880;
_testClass = new RecordType(_stringProperty, _intProperty);
}
[Fact]
public void CanConstruct()
{
// Act
var instance = new RecordType(_stringProperty, _intProperty);
// Assert
instance.Should().NotBeNull();
}
[Fact]
public void ImplementsIEquatable_RecordType()
{
// Arrange
var same = new RecordType(_stringProperty, _intProperty);
var different = new RecordType("TestValue1002897798", 1657007234);
// Assert
_testClass.Equals(default(object)).Should().BeFalse();
_testClass.Equals(new object()).Should().BeFalse();
_testClass.Equals((object)same).Should().BeTrue();
_testClass.Equals((object)different).Should().BeFalse();
_testClass.Equals(same).Should().BeTrue();
_testClass.Equals(different).Should().BeFalse();
_testClass.GetHashCode().Should().Be(same.GetHashCode());
_testClass.GetHashCode().Should().NotBe(different.GetHashCode());
(_testClass == same).Should().BeTrue();
(_testClass == different).Should().BeFalse();
(_testClass != same).Should().BeFalse();
(_testClass != different).Should().BeTrue();
}
[Fact]
public void StringPropertyIsInitializedCorrectly()
{
_testClass.StringProperty.Should().Be(_stringProperty);
}
[Fact]
public void IntPropertyIsInitializedCorrectly()
{
_testClass.IntProperty.Should().Be(_intProperty);
}
}