有人知道如何将xUnit与enum
值一起用于“Theory”和“InlineData”吗?这导致测试无法识别为测试并且无法运行:
[Theory]
[InlineData("12h", 12, PeriodUnit.Hour)]
[InlineData("3d", 3, PeriodUnit.Day)]
[InlineData("1m", 1, PeriodUnit.Month)]
public void ShouldParsePeriod(string periodString, int value, PeriodUnit periodUnit)
{
var period = Period.Parse(periodString);
period.Value.Should().Be(value);
period.PeriodUnit.Should().Be(periodUnit);
}
如果我使用枚举的int值而不是枚举值,则测试可以正常运行。
最佳答案
您不需要[MemberData]
,enum
值应立即可用。按照documentation enums
是常量:An enum type is a distinct value type (Value types) that declares a set of named constants.
以下代码示例对我有用(一个.net core 3.0
xUnit Test Project模板):
public class UnitTest1
{
public enum Foo { Bar, Baz, Qux }
[Theory]
[InlineData(Foo.Bar, Foo.Baz)]
public void Test1(Foo left, Foo right)
{
Assert.NotEqual(left, right);
}
}
肯定有其他事情给您带来麻烦。