C#单元测试-包含多个测试的XML数据源
我不熟悉单元测试框架。使用VS2010,我使用XML作为数据源 假设我的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
<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);
}