2014-10-20 17 views
5

Có thể sử dụng thuộc tính [TestCaseSource] của NUnit với nhiều hơn một đối số không? Dưới đây là mã của tôi (hiện đang được di cư từ MbUnit):[TestCaseSource] của NUnit với nhiều đối số như với [Nhà máy] của MbUnit

public IEnumerable<object[]> GetTestSwitchMultiItems() 
    { 
     yield return new object[] { SwitchType.Sell, 0.94733, 
            new SwitchSourceItem[] { new SwitchSourceItem(1176, 100, 50, SwitchSourceItem.QuantityType.TotalQuantity, SwitchType.Sell)}, 
            new SwitchEquivalentItem[] { new SwitchEquivalentItem(415318955, 35, 25, SwitchType.Buy), new SwitchEquivalentItem(4348, 65, 45, SwitchType.Buy) } }; 

     yield return new object[] { SwitchType.Sell, 0.94733, 
            new SwitchSourceItem[] { new SwitchSourceItem(1176, 100, 50, SwitchSourceItem.QuantityType.TotalQuantity, SwitchType.Sell)}, 
            new SwitchEquivalentItem[] { new SwitchEquivalentItem(415318955, 15, 25, SwitchType.Buy), new SwitchEquivalentItem(4348, 25, 45, SwitchType.Buy), 
                   new SwitchEquivalentItem(430397879, 20, 15, SwitchType.Buy), new SwitchEquivalentItem(5330, 20, 85, SwitchType.Buy)} }; 
    } 

    [Test, TestCaseSource("GetTestSwitchMultiItems")] 
    public void TestSwitchMultiItems(SwitchType switchType, double exchangeRate, SwitchSourceItem[] sources, SwitchEquivalentItem[] equivs) 
    { 
     ... 
    } 

Bạn thấy đấy, tham số được thông qua như là một đối tượng [] để có nhiều hơn một tham số trong TestSwitchMultiItems. Nên làm việc đó hoặc tôi phải thay vì chỉ sử dụng một tham số trong các tham số TestSwitchMultiItems (object []). Cảm ơn bạn.

Trả lời

7

Có, bạn có thể sử dụng thuộc tính TestCaseSource với nhiều đối số. Trong ví dụ bạn đưa ra, bạn sẽ thấy bài kiểm tra TestSwitchMultiItems chạy hai lần. Tôi đã sử dụng NUnit trên đoạn mã thử nghiệm sau đây. TestSwitchMultiItems chạy hai lần và cuộc gọi Assert tầm thường trong mỗi lần thử nghiệm.

[Test, TestCaseSource("GetTestSwitchMultiItems")] 
    public void TestSwitchMultiItems(string switchType, double exchangeRate, object[] sources, object[] equivs) 
    { 
     Assert.AreEqual("Sell", switchType); 
    } 

    public IEnumerable<object[]> GetTestSwitchMultiItems() 
    { 
     yield return 
      new object[] 
      { 
       "Sell", 0.94733, new object[] { new { a = 1176, b = 100, c = 50, d = 5, e = "Sell" } }, 
       new object[] { new { a = 415318955, b = 35, c = 25, d = "Buy", e = 4348, f = 65, g = 45, h = "Buy" } } 
      }; 

     yield return 
      new object[] 
      { 
       "Sell", 0.94733, new object[] { new { a = 1176, b = 100, c = 50, d = 5, e = "Sell" } }, 
       new object[] 
       { 
        new { a = 415318955, b = 35, c = 25, d = "Buy", e = 4348, f = 65, g = 45, h = "Buy" }, 
        new { a = 415318955, b = 35, c = 25, d = "Sell", e = 7348, f = 65, g = 45, h = "Sell" } 
       } 
      }; 
    } 
Các vấn đề liên quan