【发布时间】:2020-08-22 18:47:09
【问题描述】:
我有一些自定义 C# 对象,我想将它们作为 xUnit 的 Theory 中的 InlineData 参数传递。
我尝试the answer in this question 没有任何成功,因为我的对象不是字符串,因此无法创建为编译时常量(属性参数必须是属性参数类型的常量表达式、typeof 表达式或数组创建表达式)。
这是我尝试过的,
private static readonly Card sevenOfHearts = Card.SevenOfHearts;
private static readonly Card sevenOfSpades = Card.SevenOfSpades;
private static readonly Card sevenOfDiamonds = Card.SevenOfDiamonds;
private static readonly Card sevenOfClubs = Card.SevenOfClubs;
[Theory]
[InlineData(sevenOfHearts)]
[InlineData(sevenOfSpades)]
[InlineData(sevenOfDiamonds)]
[InlineData(sevenOfClubs)]
void Test(
Card card)
{
//...
}
但我抱怨说这些对象不是编译时常量。
有没有其他选择?
【问题讨论】:
-
这是错误的确切文本吗?您应该尽可能逐字发布错误消息。
-
您可以使用 ClassData 而不是 InlineData 来实现这一点(一个很好的例子可以在这里找到andrewlock.net/…)或使用 MemberData
-
好的,我会发布错误@Wyck的确切文本
标签: c# unit-testing xunit