亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何提供兩個數組作為 DataRow 參數?

如何提供兩個數組作為 DataRow 參數?

C#
呼如林 2023-09-16 15:18:33
我正在嘗試編寫一個比較兩個數組的單元測試。我將單元測試定義如下:[DataTestMethod][DataRow(    new[] { "COM3", "COM1", "COM2" },    new[] { "COM1", "COM2", "COM3" })]...public void TestCOMPortSorting(string[] unorderedPorts, string[] expectedOrderedPorts)但是,我的 IDE 拋出以下錯誤:屬性參數必須是屬性參數類型的常量表達式、typeof 表達式或數組創建表達式我嘗試過使用外部變量,將數組定義為new string[],用這些數組創建單個數組,但都沒有成功。如何使用這兩個數組作為單元測試的參數?
查看完整描述

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

? ? };

}


查看完整回答
反對 回復 2023-09-16
?
繁星點點滴滴

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)

請注意,如果您有任何其他第三個參數,則無需解決方法即可工作。


查看完整回答
反對 回復 2023-09-16
  • 2 回答
  • 0 關注
  • 154 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號