在借助模拟/假对象的单元测试中,我想知道如果我的测试类包含测试同一类的方法(因此,需要的假对象应该是所有测试用例都相同)。像这样的东西:
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 的一些虚拟方法)。有什么建议最好的做法是什么?