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

标签 c# unit-testing

我是单元测试框架的新手。使用 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...
}

您还可以使用 this method 将此方法用于 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);
}

关于C# 单元测试 - 包含多个测试的 XML 数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14288902/

相关文章:

asp.net - 如何解释 'test every scenario you can think of'

c# - 在类型上找不到匹配的构造函数

C# 将图片框添加到面板

C# EF 4.1 在 DbContext 中动态创建表

iPhone 单元测试

java - 跳过@Before 进行测试 ||有没有办法在 TestRule 中执行 @Before 方法?

python - python - 如何在python中使用nosetest/unittest断言输出?

java - 使用 DB 对 Hibernate 进行单元测试,测试返回 nullpointerException

c# - 如何设置程序的CPU亲和性?

c# - 如何模式匹配通用类型