- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的问题是如何在一个测试类中设置多个夹具?
但是 Zoo 类的构造函数不能处理多个 fixture。
例如:
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; }
}
最佳答案
首先,让我们记忆一下我们什么时候想在 xUnit 中使用 Class Fixtures:
When to use: when you want to create a single test context and share it among all the tests in the class, and have it cleaned up after all the tests in the class have finished.
如您所说,您希望将 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。
关于c# - Xunit 多个 IClassFixtures,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36319420/
我有以下简化的伪代码 class CommonSetup { public void CommonSetup() { // do stuff once per cla
我的问题是如何在一个测试类中设置多个夹具? 但是 Zoo 类的构造函数不能处理多个 fixture。 例如: public class Zoo : IClassFixture, IClassFixtu
TextFixture 和测试 public class TestFixture : IDisposable { public TestFixture() { var
我正在使用 xUnit 进行集成测试。为此,我使用了一个 localdb 实例。话虽如此,我想用一些预定义的数据启动一次数据库实例,当然我希望所有测试用例都如此。我可以编写隔离的每个测试用例,这样它们
我一直使用 Nunit,现在转向 XUnit。 当我没有实现 IClassFixture 时,我成功地使用了 ITestOutputHelper,例如: public myClassTest(ITes
我为集成测试升级到 .net core 3.0 时遇到的问题做了一个 repo : https://github.com/ranouf/TestingWithDotNetCore3_0 当我启动测试时
我为集成测试升级到 .net core 3.0 时遇到的问题做了一个 repo : https://github.com/ranouf/TestingWithDotNetCore3_0 当我启动测试时
我是一名优秀的程序员,十分优秀!