我是单元测试框架的新手.使用VS 2010,我使用XML作为我的数据源.
假设我的XML看起来像这样:
<testgroup>
<test>
<param1>100</param1>
<param2>200</param2>
</test>
<test>
<param1>333</param1>
<param2>222</param2>
</test>
</testgroup>
Run Code Online (Sandbox Code Playgroud)
因此,测试组可能包含大量测试.在单个xml文件中分解它们并不高效.为简单起见,假装param1是一个int而param2是另一个int,我的测试是验证param2> param1.
是否可以编写单个TestMethod,以便迭代XML中的各种测试,以便单元测试框架为每个测试展示一个测试?
到目前为止我还没有找到解决方案.也许数据源并不意味着以这种方式驱动测试数据.
Cod*_*man 14
使用NUnit,您可以执行以下操作:
[TestMethod]
public void TestDerpMethod(int a, string b, bool c)
{
//...test code...
}
Run Code Online (Sandbox Code Playgroud)
您可以执行以下多个测试用例:
[TestMethod]
[TestCase(12, "12", true)]
[TestCase(15, "15", false)]
public void TestDerpMethod(int a, string b, bool c)
{
//...test code...
}
Run Code Online (Sandbox Code Playgroud)
你也可以使用使用此方法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>
Run Code Online (Sandbox Code Playgroud)
和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);
}
Run Code Online (Sandbox Code Playgroud)