2 回答
![?](http://img1.sycdn.imooc.com/545862db00017f3402200220-100-100.jpg)
TA贡献1784条经验 获得超2个赞
对于如此复杂的数据,改为使用DynamicData属性
该属性允许从方法或属性获取参数值。该方法或属性必须返回一个IEnumerable<object[]>. 每行对应于测试的值。
[DataTestMethod]
[DynamicData(nameof(TestDataMethod), DynamicDataSourceType.Method)]
public void TestCOMPortSorting(string[] unorderedPorts, string[] expectedOrderedPorts) {
//...
}
static IEnumerable<object[]> TestDataMethod() {
return new[] {
new []{ new[] { "COM3", "COM1", "COM2" }, new[] { "COM1", "COM2", "COM3" } } //a data row
};
}
![?](http://img1.sycdn.imooc.com/54584d6100015f5802200220-100-100.jpg)
TA贡献1803条经验 获得超3个赞
DataRowAttribute可以处理简单类型的数组。这里的问题是,DataRowAttribute多个参数具有以下重载:DataRowAttribute(object data1, params object[] moreData)。
在你的表达式中,我认为 C# 将第二个字符串数组作为 ,object[] moreData但它不喜欢它。如果显式指定params object[]参数,它将按预期采用第二个字符串数组。
[DataTestMethod]
[DataRow(
new[] { "COM3", "COM1", "COM2" },
new object[] { new[] { "COM1", "COM2", "COM3" } }
)]
...
public void TestCOMPortSorting(string[] unorderedPorts, string[] expectedOrderedPorts)
请注意,如果您有任何其他第三个参数,则无需解决方法即可工作。
- 2 回答
- 0 关注
- 110 浏览
添加回答
举报