![](/img/trans.png)
[英]How to compare 2 lists containing json values in C# for unit testing
[英]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.