2 回答

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
? ? };
}

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 關注
- 154 瀏覽
添加回答
舉報