1

我在 xml 中有两个测试用例。我正在使用 vs 2010 使用 c# 进行单元测试。我创建了一个测试方法,用于在 xml 文件上方读取值。

在这里,我的问题是第一个测试用例是否失败。如何同时运行下一个测试用例。有没有办法在一次运行中失败或通过了多少测试用例。

  <Testcases>
     <testcase>
         <id>1</id>
         <name>A</name>
      </testcase>
       <testcase>
         <id>1</id>
         <name>B</name>
      </testcase>

  <Testcases>
4

2 回答 2

1
[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

于 2013-08-12T09:09:48.040 回答
0

试试 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);
    }
}
于 2013-08-12T09:14:48.193 回答