【发布时间】:2019-05-21 01:17:39
【问题描述】:
这是我的一些代码的简化版本:
public class FixtureData
{
public object SomeValue { get; set; }
}
public class TestForNull : IClassFixture<FixtureData>
{
private readonly FixtureData _data;
public TestForNull(FixtureData data)
{
_data = data;
}
[Fact]
public void TestForNull()
{
_data.SomeValue = null;
Assert.Null(_data.SomeValue);
}
}
public class TestForObject : IClassFixture<FixtureData>
{
private readonly FixtureData _data;
public TestForObject(FixtureData data)
{
_data = data;
}
[Fact]
public void TestForObject()
{
Assert.NotNull(_data.SomeValue);
}
}
这两个类都没有标记任何集合属性。它们都属于同一个程序集。
我看到这些测试失败(但只是偶尔失败),这只能通过 XUnit 在测试类之间共享 FixtureData 实例和 TestForNull 先运行(因为它有副作用)来解释。
不过,XUnit documentation 清楚地表明,类固定装置是“在单个类中的测试之间共享对象实例”。
这是一个错误吗?我应该改变我使用灯具的方式吗?
我正在为 .NET Core 2.3.1 使用 xUnit。
【问题讨论】:
标签: unit-testing xunit fixtures xunit.net