2016-11-04 21 views
1

我有以下是否有可能爲數據源的不同迭代(數據值)創建(動態)不同的測試用例?

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

現在我在XML文件(SumTestData.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); 
} 

當我執行[TestMethod的]在測試資源管理器中,我只能看到一個測試用例,是否可以爲數據源的不同迭代(數據值)創建(動態)不同的測試用例? 根據我的數據源,它有三個值,是的測試資源管理器將其視爲一個測試用例非常明顯,但對於我來說,有三個測試用例。有辦法創建或創建動態測試用例,可以在測試資源管理器中看到三個測試用例而不是一個套件,我懷疑但希望在這裏回答

回答

0

使用MSTest,您將始終會看到一個測試用例數據驅動的測試方法(即使在測試資源管理器或單元測試階段ReSharper的)

但是,如果您使用NUnit的測試,你可以看到測試用例的每一行:

using System; 
using NUnit.Framework; 

namespace MyTests 
{ 
    public class MyTestClass 
    { 
     private static object[] myDataSource => new object[] 
      { 
       new object[] { 1, 1, 2 }, 
       new object[] { 1, 2, 3 }, 
       new object[] { 1, -1, 1 }, 
      } 

     [TestCaseSource(nameof(myDataSource))] 
     public void MyTestMethod(int a1, int a2, int result) 
     { 
      ExecSumTest(a1, a2, result); 
     } 
    } 
} 

或者,如果所有的參數是常數,您可以使用TestCase屬性。你甚至可以爲行定義一個自定義名稱:

using System; 
using NUnit.Framework; 

namespace MyTests 
{ 
    public class MyTestClass 
    { 
     [TestCase(1, 1, 2, TestName = "Custom name of the first row")] 
     [TestCase(1, 2, 3)] 
     [TestCase(1, -1, 1)] 
     public void MyTestMethod(int a1, int a2, int result) 
     { 
      ExecSumTest(a1, a2, result); 
     } 
    } 
} 
+0

那麼,任何其他解決方案的測試瀏覽器? – user3652040

+0

我贊成你,因爲這對我來說也是一個問題。不幸的是,即使在Visual Studio 2015中,MSTest也不會顯示多個案例。也許這是因爲數據源也可以是數據庫,並且無法在運行時靜態評估。 NUnit在這方面不僅更好,而且你可以看到數據驅動的測試更加緊湊和可維護。 ReSharper同時支持MSTest和NUnit,但僅顯示NUnit的子測試案例... :( – taffer

+0

是否有Test Explorer的任何直接/間接(包裝類型)解決方案? – user3652040

相關問題