簡體   English   中英

如何在 MSTest DataRow 中將屬性作為參數傳遞

[英]How can I pass property as parameter in MSTest DataRow

我在使用 MSTest 的單元測試中有一個 DataTestMethod,並且在我的構造函數中有一個字符串屬性,假設我有這個代碼,例如:

[DataTestMethod]
[DataRow("test")] 
[DataRow(stringproperty)] // How is this?

public void TestMethod(string test) {
    Assert.AreEqual("test", test);
}

是否可以在 DataRow 中將屬性作為參數傳遞?

謝謝。

是,如果您使用 DynamicDataAttribute

[DynamicData("TestMethodInput")]
[DataTestMethod]
public void TestMethod(string test)
{
    Assert.AreEqual("test", test);
}

public static IEnumerable<object[]> TestMethodInput
{
    get
    {
        return new[]
        {
            new object[] { stringproperty },
            new object[] { "test" }
        };
    }
}
Try this


  
 
  
  
  
private List<string> testData=new List<string>();
testData.Add("test");
testData.Add("test1");

private IEnumerable<object[]> ListOfTestData =>
    new List<string[]> 
    {
        new[] {testData[0]},
        new[] {testData[1]}
    };

[DataTestMethod]
[DynamicData (nameof (ListOfTestData))]
public void TestMethod(string test) 
{
    Assert.AreEqual("test", test);
}
Source: https://dev.to/frannsoft/mstest-v2---new-old-kid-on-the-block

作為改進,使用

[DynamicData(nameof(TestMethodInput))]

而不是[DynamicData("TestMethodInput")]

稍后在 C# 中引入的nameof關鍵字確保遵循所有重命名重構並在編譯時捕獲命名錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM