c# - 将多个数组传递给 xUnit
问题描述
我了解如何将一个数组传递给 xUnit:将字符串数组传递给 xunit 测试方法
但是,我想将三个数组传递给我的测试方法:
Type1[] ReturnValuesForMock;
Type2[] ExpectedTestResult;
Type3[] TestData
有没有办法做到这一点?Type1
是一个枚举,所以我可以使用一个编译时常量new [] {enum}
,但这对于Type2
需要调用new()
. 然后我可以处理Type3
as params
。
我觉得这真的应该是可能的,但我不确定如何......
解决方案
我不确定这是否是最好的方法,但我已经确定我可以[ClassData]
在我的测试中使用该属性,如下所示:
[Theory]
[ClassData(typeof(TestDataGenerator))]
public void Test1(Type1[] t1, Type2[] t2, Type3[] t3)
{
//MyTest
}
然后通过一个TestDataGenerator
类提供数据:
private class TestDataGenerator:IEnumerable<object[]>
{
private static readonly List<object[]> _data = new()
{
new object[]{new Type1[] {...}, new Type2[]{...)}, new Type3[]{...}},
...
};
public IEnumerator<object[]> GetEnumerator() => _data.GetEnumerator();
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}
推荐阅读
- python - 每当在谷歌云存储上创建指定文件时,我想使用云函数触发 python 脚本
- python - QMessageBox 上按钮的 buttonClicked() 方法
- reactjs - 如果组件从 / 重定向,离子反应组件不会在(Hooks)状态更改时重新渲染
- javascript - 刷新时带有文本的随机图像
- python - 我该如何改进这个 knn 算法?
- c# - 相对于 C# DateTime 中的 LocalTime,UTC 月份是否“错误”?
- .net - 如何使用 Azure Devops 中的 CI 生成设置(.msi 或 exe)文件?
- kotlin - 如何在 Android 中弃用 MasterKeys 后创建 masterKey
- sql - 有没有办法根据 R 中的数据框过滤 SQL 表?
- azure-devops - 断开组织与 Azure Active Directory 的连接后丢失组织