C#库自动生成单元测试的值

tvb*_*usy 5 c# tdd unit-testing

我已经读过一个库,它可以在单元测试中生成自动值,但无法找到它.基本上,我想要的不是:

[Test]
public void Test()
{
    int x = 2;
    int y = 5;

    Assert.AreEqual(7, ObjectUnderTest.Add(x, y));
}
Run Code Online (Sandbox Code Playgroud)

我想写:

[Test]
public void Test()
{
    int x = Lib.Int();
    int y = Lib.Int();

    Assert.AreEqual(x + y, ObjectUnderTest.Add(x, y));
}
Run Code Online (Sandbox Code Playgroud)

更新:

AutoFixture是我正在寻找的.使用AutoFixture,我的测试将是:

[Test]
public void Test()
{
    var fixture = new Fixture();
    int x = fixture.CreateAnonymous<int>();
    int y = fixture.CreateAnonymous<int>();

    Assert.AreEqual(x + y, ObjectUnderTest.Add(x, y));
}
Run Code Online (Sandbox Code Playgroud)

dan*_*iax 7

我认为你可以使用PEX!

Pex自动生成一个小型测试套件,具有针对.NET程序的高代码覆盖率.为此,Pex执行系统程序分析(使用动态符号执行,类似于路径限制模型检查)来确定参数化单元测试的测试输入.Pex通过监视执行跟踪来了解程序行为.Pex使用约束求解器生成新的测试输入,这些输入执行不同的程序行为.