2013-08-12 91 views
1

我在xml.i中使用了兩個測試用例,使用vs 2010進行單元測試,使用c#.i創建了一個單獨的testmethod,它用於上述xml文件以讀取值。Vs 2010中的單元測試

在這裏,我的問題是如果第一個測試用例得到fail.how同時運行下一個測試用例。有沒有辦法有多少個測試用例在單次運行中失敗或通過。

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

    <Testcases> 
+1

爲什麼要在XML中定義測試? – Steven

+0

它們可能是兩個或更多的測試用例,現在我們在xml文件中給出輸入數據。 – kumar

回答

1
[TestMethod] 
public void TestDerpMethod(int a, string b, bool c) 
{ 
    //...test code... 
} 

你可以做多個測試用例,像這樣:

<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] 
[TestCase(12, "12", true)] 
[TestCase(15, "15", false)] 
public void TestDerpMethod(int a, string b, bool c) 
{ 
    //...test code... 
} 

您也可以使用此方法使用此方法XML

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

希望這將有助於FUL

參考此鏈接

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

+0

好的建議@Backtrack :) – kumar

+0

-1:你從哪裏得到'[TestCase]'? –

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); 
    } 
} 
+0

好的建議@ CRice.but目前我們正在使用vs 2010的inbuild單元測試 – kumar