Vs 2010的单元测试
本文关键字:单元测试 2010 Vs | 更新日期: 2023-09-27 18:27:22
我在xml中有两个测试用例。我使用vs 2010使用c#进行单元测试。我创建了一个单独的测试方法,该方法用于xml文件之上,以便读取值。
这里,我的问题是第一个测试用例是否失败。如何同时运行下一个测试用例。有没有办法在一次运行中有多少测试用例失败或通过。
<Testcases>
<testcase>
<id>1</id>
<name>A</name>
</testcase>
<testcase>
<id>1</id>
<name>B</name>
</testcase>
<Testcases>
[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);
}
希望这将有助于
请参阅此链接
http://sylvester-lee.blogspot.in/2012/09/data-driven-unit-testing-with-xml.html
以及
http://social.msdn.microsoft.com/Forums/vstudio/en-US/7f6a739a-9b12-4e8d-ad52-cdc0ca7a2752/using-xml-datasource-in-unit-test
试试怎么样nunit的TestCaseSource。
通过这种方式,您可以将测试指向一个方法,该方法在读取xml后返回数据。
public class TestCase
{
public int Id { get; set; }
public string Name { get; set; }
}
public class XmlReader
{
public static IEnumerable<TestCase> TestCases
{
get
{
// replace this with reading from your xml file and into this array
return new[]
{
new TestCase {Id = 1, Name = "A"},
new TestCase {Id = 1, Name = "B"}
};
}
}
}
[TestFixture]
public class TestClass
{
[TestCaseSource(typeof(XmlReader), "TestCases")]
public void SomeTest(TestCase testCase)
{
Assert.IsNotNull(testCase);
Assert.IsNotNull(testCase.Name);
}
}