gpt4 book ai didi

unit-testing - 我应该在设置中还是在测试用例中初始化模拟对象?

转载 作者:行者123 更新时间:2023-12-02 05:32:34 26 4
gpt4 key购买 nike

在借助模拟/假对象进行单元测试时,我想知道如果我的测试类包含测试同一类的方法(因此,假对象所有测试用例所需的应该相同)。像这样:

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 的一些虚拟方法),就会出现问题。任何建议什么是最佳做法?

最佳答案

  • 如果有一些通用设置由套件/夹具中的所有测试共享(包括对模拟协作者设置一些期望),移动到设置方法。 (同上测试中与读者无关的附带细节)
  • 如果一个测试用例想要扩展通用设置,请在测试用例本身中添加特定的内联设置
  • 如果一个测试用例想要不同的设置(尽管有明显的重叠),移动到不同的测试套件并找出一些其他机制来共享设置(例如通过组合、实用方法、对象母亲等)

关于unit-testing - 我应该在设置中还是在测试用例中初始化模拟对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12190863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com