2014-10-20 12 views
5

Birden fazla bağımsız değişkenle NUnit [TestCaseSource] özniteliğini kullanmak mümkün müdür?NUnit'in [TestCaseSource], MbUnit'in [Factory] gibi birçok argümanı ile [Fabrika]

Görüyorsunuz
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) 
    { 
     ... 
    } 

, parametreler bir nesne [] olarak geçirilen TestSwitchMultiItems birden fazla parametreye sahip amacıyla: İşte (MbUnit taşınıyor) benim kod. Bunun yerine çalışmalı mıyım yoksa bunun yerine sadece bir parametre kullanın (TestSwitchMultiItems (object [] parameters). Teşekkür ederim.

cevap

7

Evet, TestCaseSource özniteliğini çoklu argümanlarla kullanabilirsiniz. Verdiğiniz örnekte, iki kez deneme TestSwitchMultiItems çalıştırmak göreceksiniz. Aşağıdaki kısıtlanmış test kodunda NUnit kullandım. TestSwitchMultiItems iki kez çalışır ve her bir testte önemsiz Assert çağrısı geçer.

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