我有很多测试,这些测试都安排了一些TestFixtures,我发现我经常重复这个安排代码。每个测试的前几行几乎是相同的。
是否有一种方法可以在所有测试之间声明一个共享的TestFixture,同时仍然在每个测试之间“重置”它们,从而保持测试的独立性?
public class MyClassTests
{
private readonly Mock<ICoolService> _mockCoolService;
private readonly Mock<IGreatService> _mockGreatService;
private readonly Mock<INiceService> _mockNiceService;
private readonly MyClass _controller;
public MyClassTests(){
//initialize the services.
_controller = new MyClass(_mockCoolService.Object, _mockGreatService.Object, _mockNiceService.Object);
}
[Fact]
public async Task MyTest_ShouldDoThis(){
var batchName = TestFixture.Create<string>();
var documentName = TestFixture.Create<string>();
var controlId = TestFixture.Create<int>();
_mockCoolService.Setup(x=>x.ACoolMethod(batchName, documentName)).Returns(batchName)
var result = _controller.DoThis()
//VerifyAll
}
[Fact]
public async Task MyTest_ShouldDoThat(){
var batchName = TestFixture.Create<string>();
var documentName = TestFixture.Create<string>();
var controlId = TestFixture.Create<int>();
_mockGreatService.Setup(x=>x.AGreatMethod(batchName, documentName)).Returns(batchName)
var result = _controller.DoThat()
//VerifyAll
}
[Fact]
public async Task MyTest_ShouldDoAnotherThing(){
var batchName = TestFixture.Create<string>();
var documentName = TestFixture.Create<string>();
var controlId = TestFixture.Create<int>();
_mockNiceService.Setup(x=>x.ANiceMethod(batchName, documentName)).Returns(batchName)
var result = _controller.DoAnotherThing()
//VerifyAll
}
}发布于 2019-10-25 14:12:28
xUnit文档建议将这样的代码放在构造函数中:
xUnit.net为每个正在运行的测试创建测试类的一个新实例,因此放置在测试类构造函数中的任何代码都将为每个测试运行。
https://stackoverflow.com/questions/58560027
复制相似问题