Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#单元测试-包含多个测试的XML数据源_C#_Unit Testing - Fatal编程技术网

C#单元测试-包含多个测试的XML数据源

C#单元测试-包含多个测试的XML数据源,c#,unit-testing,C#,Unit Testing,我不熟悉单元测试框架。使用VS2010,我使用XML作为数据源 假设我的XML如下所示: <testgroup> <test> <param1>100</param1> <param2>200</param2> </test> <test> <param1>333</param1> <param2>222</para

我不熟悉单元测试框架。使用VS2010,我使用XML作为数据源

假设我的XML如下所示:

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

100
200
333
222
所以一个测试组可以包含很多测试。在单个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使用此方法:


令人惊叹的!正是我想要的谢谢你。你的两种方法非常有用。我缺少的一点是如何定义数据源,其中“行”与XML元素匹配。我一定是在先前的阅读中错过了那一部分。[旁注:我无法增加您的评论。我的代表太低:(]没问题:)如果回答了您的问题,请确保将其标记为已回答。@Pheonixblade9 TestCase不是NUnit属性吗?
TestCase
在MS单元测试框架中不存在。@Philippe将文本更改为显式引用NUnit
<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>
[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);
}