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>

Vs 2010的单元测试

[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);
    }
}