我的问题是如何在一个测试类中设置多个装置?
但是Zoo类的构造函数不能处理多个灯具。
例如:
public class Zoo : IClassFixture<Tiger>, IClassFixture<Wolf>, IClassFixure<Bird>
{
private IFixture fixture;
public Zoo(IFixture fixture)
{
this.fixture = fixture;
}
[Fact]
public void TestAnimal()
{
//Arrange
int actualBonesCount = this.fixture.BonesCount;
int expectedBonesCount = 2;
//Act & Assert
Assert.Equal(expectedBonesCount, actualBonesCount );
}
}
虎类
public class Tiger : FixtureBase
{
public Tiger()
{
this.BonesCount = 4;
}
}
鸟类
public class Bird: FixtureBase
{
public Bird()
{
this.BonesCount = 2;
}
}
测试夹具基类
public class FixtureBase : IFixture
{
public int BonesCount { get; set; }
}
及接口
public interface IFixture
{
int BonesCount { get; set; }
}
首先,让我们回想一下什么时候我们要使用班级赛程在 x 单元中:
何时使用:当您想要创建单个测试上下文并在类中的所有测试之间共享它,并在类中的所有测试完成后清理它时。
正如您所说,您想重用以下方法Zoo
测试类到实施测试。既然实现使用继承,为什么测试类不也使用继承呢?
public abstract class Zoo
{
protected readonly IFixture Fixture;
protected Zoo(IFixture fixture)
{
Fixture = fixture;
}
[Fact]
public void TestAnimal()
{
//Arrange
int actualBonesCount = Fixture.BonesCount;
int expectedBonesCount = 2;
//Act & Assert
Assert.Equal(expectedBonesCount, actualBonesCount);
}
}
public class BirdTests : Zoo, IClassFixture<Bird>
{
public BirdTests(Bird fixture)
: base(fixture)
{
}
}
public class TigerTests : Zoo, IClassFixture<Tiger>
{
public BirdTests(Tiger fixture)
: base(fixture)
{
}
}
不过,我真的不明白你希望如何通过硬编码的每个测试BonesCount
在一般测试中为 2。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)