xunit 通过 class 方法作为内联数据
xunit pass class method as inline data
是否可以将对象方法作为内联数据传递给 xunit 测试?
我有一些对象方法来设置一些对象状态,我想将其作为 [InlineData] 传递给 [Theory],如下所示:
private readonly SomeObject _sut;
public SomeConstructorForTests()
{
_sut = new("foo", "bar");
}
[Theory]
[InlineData(_sut.MethodToSetState)]
[InlineData(_sut.SomeOtherMethodToSetState)]
public void some_test(Action set_pre_state)
{
// arrange
set_pre_state();
// act
...
// assert
...
}
在内联数据“_sut”处出现语法错误 --> 非静态字段、方法或 属性.
需要对象引用
我只是不想在应该可以内联它的时候创建一个丢失的测试,让它保持干燥 :)
您需要为此使用 ClassData。使用
注释您的方法
[Theory]
[ClassData(typeof(TestDataObject))]
并且 TestDataObject 需要扩展 TheoryData<SomObject>
。
然后您可以在 TestData class 的构造函数中调用 Add(new SomeObject("foo", "bar"))
。
是否可以将对象方法作为内联数据传递给 xunit 测试?
我有一些对象方法来设置一些对象状态,我想将其作为 [InlineData] 传递给 [Theory],如下所示:
private readonly SomeObject _sut;
public SomeConstructorForTests()
{
_sut = new("foo", "bar");
}
[Theory]
[InlineData(_sut.MethodToSetState)]
[InlineData(_sut.SomeOtherMethodToSetState)]
public void some_test(Action set_pre_state)
{
// arrange
set_pre_state();
// act
...
// assert
...
}
在内联数据“_sut”处出现语法错误 --> 非静态字段、方法或 属性.
需要对象引用我只是不想在应该可以内联它的时候创建一个丢失的测试,让它保持干燥 :)
您需要为此使用 ClassData。使用
注释您的方法[Theory]
[ClassData(typeof(TestDataObject))]
并且 TestDataObject 需要扩展 TheoryData<SomObject>
。
然后您可以在 TestData class 的构造函数中调用 Add(new SomeObject("foo", "bar"))
。