在这个使用 nunit v3.13.3 的示例中,我希望运行两个测试
[TestCaseSource(nameof(_cases))]
public void MethodInTestProject(RecordParameter recordParameter)
{
Assert.Pass();
}
private static readonly object[] _cases = new object[]
{
new object?[]
{
null,
},
new object?[]
{
new RecordParameter(Guid.NewGuid()),
},
};
public record RecordParameter(Guid StoreId);
调试时,只有第一个案例被传递到 MethodInTestProject 中。在测试资源管理器中,我得到以下输出
MethodInTestProject(RecordParameter { StoreId = 71cda514-3e76-4829-a244-1f39cd4a2532 })
Source:MyTests.cs line 228
我还有其他在参数中传递类、值类型等而没有任何错误的例子。有没有特定的方法来传递 c# 记录?
您正在制作一个由对象数组组成的源。虽然 在技术上是允许的,这给 NUnit 在解释源代码时几乎没有要使用的类型信息。使第二级数组可为空会使事情进一步复杂化。该数组表示收集到的方法参数,不能为空。在您的情况下,您可以消除一个级别,因为该方法只需要一个参数。
但是,更好的方法是使用
TestCaseData
,NUnit 类旨在保存有关测试用例的信息。像这样的……
private static readonly TestCaseData[] _cases = new []
{
new TestCaseData(null), // Assuming you want null passed to the method
new TestCaseData(new RecordParameter(Guid.NewGuid()))
}