簡體   English   中英

C#單元測試 - 包含多個測試的XML數據源

[英]C# Unit Testing - XML Datasource containing multiple tests

我是單元測試框架的新手。 使用VS 2010,我使用XML作為我的數據源。

假設我的XML看起來像這樣:

<testgroup>
  <test>
    <param1>100</param1>
    <param2>200</param2>
  </test>
  <test>
    <param1>333</param1>
    <param2>222</param2>
  </test>
</testgroup>

因此,測試組可能包含大量測試。 在單個xml文件中分解它們並不高效。 為簡單起見,假裝param1是一個int而param2是另一個int,我的測試是驗證param2> param1。

是否可以編寫單個TestMethod,以便迭代XML中的各種測試,以便單元測試框架為每個測試展示一個測試?

到目前為止我還沒有找到解決方案。 也許數據源並不意味着以這種方式驅動測試數據。

使用NUnit,您可以執行以下操作:

[TestMethod]
public void TestDerpMethod(int a, string b, bool c)
{
    //...test code...
}

您可以執行以下多個測試用例:

[TestMethod]
[TestCase(12, "12", true)]
[TestCase(15, "15", false)]
public void TestDerpMethod(int a, string b, bool c)
{
    //...test code...
}

你也可以使用使用此方法XML 這種方法

<Rows>
    <Row>
        <A1>1</A1>
        <A2>1</A2>
        <Result>2</Result>
    </Row>
    <Row>
        <A1>1</A1>
        <A2>2</A2>
        <Result>3</Result>
    </Row>
    <Row>
        <A1>1</A1>
        <A2>-1</A2>
        <Result>1</Result>
    </Row>
</Rows>

和C#:

[TestMethod]
[DeploymentItem("ProjectName\\SumTestData.xml")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",
                   "|DataDirectory|\\SumTestData.xml",
                   "Row",
                    DataAccessMethod.Sequential)]
public void SumTest()
{
    int a1 = Int32.Parse((string)TestContext.DataRow["A1"]);
    int a2 = Int32.Parse((string)TestContext.DataRow["A2"]);
    int result = Int32.Parse((string)TestContext.DataRow["Result"]);
    ExecSumTest(a1, a2, result);
}


private static void ExecSumTest(int a1, int a2, int result)
{
    Assert.AreEqual(a1 + a2, result);
}

暫無
暫無

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

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