在借助mock / fake对象进行单元测试时,我想知道如果我的测试类包含测试同一个类的方法(因此,假对象),是否更优先在SetUp或测试方法本身中初始化模拟对于所有测试用例,所需的应该是相同的)。像这样:
class FooTests
{
Mock<IBar> mockBar;
Foo fooUnderTest;
[SetUp]
public void Setup()
{
mockBar = new Mock<IBar>();
fooUnderTest = new fooUnderTest(mockBar.Object);
}
[Test]
public void MyTest()
{
//setup mock methods
mockBar.SetUp( ... )
//test
fooUnderTest.TestSomething()
//assert something here
}
}
这似乎会阻止我们在每个测试用例中将代码复制到mockBar和fooUnderTest,但缺点是我必须声明类变量mockBar和fooUnderTest(或者这真的是一个缺点?),它将是如果我想要一些特殊的设置(例如,如果在某个测试用例中我想要覆盖Foo的一些虚拟方法),则会出现问题。有什么建议什么是最佳做法?
答案 0 :(得分:5)