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"))