繁体   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