2014-04-28 48 views
3

有這個單元測試代碼片段,從NUnit TestCaseSourceNUnit的一套測試名編程

[Test, TestCaseSource("DivideCases")] 
public void DivideTest(int n, int d, int q) 
{ 
    Assert.AreEqual(q, n/d); 
} 

static object[] DivideCases = 
{ 
    new object[] { 12, 3, 4 }, 
    new object[] { 12, 2, 6 }, 
    new object[] { 12, 4, 3 } 
}; 

它正確地運行測試三次取,但在輸出我得到同樣的測試方法的名稱,「DivideTest」跑三倍。

我想以編程方式更改/根據在代碼中定義的一些值設定測試的名稱。

有沒有人對如何做到這一點的想法?

回答

4

在你發佈的鏈接,有一個片段,你明確地通過通過TestCaseSource屬性鏈接的方法創建TestCaseData對象。當你這樣做時,你可以控制設置每個測試用例的名稱。查看下面的最後一個TestCaseData實例。

public static IEnumerable TestCases 
    { 
    get 
    { 
     yield return new TestCaseData(12, 3).Returns(4); 
     yield return new TestCaseData(12, 2).Returns(6); 
     yield return new TestCaseData(12, 4).Returns(3); 
     yield return new TestCaseData(0, 0) 
     .Throws(typeof(DivideByZeroException)) 
     .SetName("DivideByZero") 
     .SetDescription("An exception is expected"); 
    } 
    } 
+0

我讀了兩遍,這是在我的眼睛。感謝那。 – Attila

+0

TestCaseData類在哪裏以及如何運行。我不能運行相同 –

+0

有沒有辦法在不使用TestCaseSource時執行此操作? –