8

我正在为我们的 C# 项目编写单元测试。在我正在测试的几个类中,我们的方法如下所示:

public ClassWithLotsOfProperties doStuffINeedToTest(AnotherClassWithLotsOfProperties input)
{
    //do stuff
}

我计划通过模拟几个AnotherClassWithLotsOfProperties对象来测试它们,确保我知道ClassWithLotsOfProperties当第一个对象传入时会期望什么对象,然后验证我得到了我正在寻找的结果。现在,我们的团队确信被测试的类工作正常,所以我正在运行程序,让它进入doStuffINeedToTest()被调用的状态,并在方法的末尾设置一个断点,这样我就可以写下什么在方法的输入和输出对象的状态中。

这种方法的缺点是AnotherClassWithLotsOfProperties两者ClassWithLotsOfProperties都有几十个属性,这意味着从调试器中写下它们的值,然后在单元测试中设置它们的模拟将是乏味的。有没有更快的方法来设置这些单元测试?现在,我正在使用 NUnit 和 Moq。我们的团队想坚持使用 NUnit,但我愿意看看另一个模拟框架。

特别是,我认为很好的一件事是,如果我可以让 Visual Studio 或模拟框架在我运行程序以设置我想要作为测试基础的方法调用时自动为我生成模拟对象。有没有办法做这样的事情?

4

2 回答 2

5

使用自动夹具。这将使生成测试数据变得非常容易。这是一个例子:

var testData = fixture.CreateAnonymous<ClassWithLotsOfProperties>();

基本上,它将迭代类的所有属性,并为每个属性设置该类型的值。

于 2013-01-16T02:06:21.863 回答
0

最后,我咬紧牙关,在我的代码中手动输入了我所有的虚拟数据。现在测试已经完成并且可以正常工作:3

于 2013-02-25T20:53:56.060 回答