2013-06-20 23 views
5

Bir dize alan ve dize bölünmeyi beklediği bir test çantası yazmaya çalışıyorum. sonumun hedefi gerçekleştirmek için beni herhangi bir yolu var mı ancak argümanlardanListe veya param'larla yapılan TestCase

Yanlış numara

sağlanan olsun, ben TestCase bir List başlatılamıyor, bu yüzden bir params argümanı ile TestCaseSource kullanarak çalıştı ?

public IEnumerable<TestCaseData> blah 
{ 
get 
{ 
    yield return new TestCaseData("hello World", "h", "e", "l", "l", "o", " ", "W", "o", "r", "l", "d"); 
} 
} 

[TestCaseSource("blah")] 
public void testmethod(String orig, params String[] myList) 

cevap

4

hem testmethod ve TestCaseData yapıcı params almak olsa da, TestCaseData farklı params yorumlamaktadır: Bu test edilen bire bir yöntemin parametrelerine onları eşlemek çalışır. Durumunuzda, NUnit 12 parametresi olan testmethod bekler, ancak yönteminizin yalnızca iki tane vardır. Bu, gördüğünüz hatayı neden olur.

Bu sorunu gidermek için, aşağıdaki gibi yapıcı çağrısını değiştirmek gerekir:
yield return new TestCaseData(
    "hello World" 
, new[] {"h", "e", "l", "l", "o", " ", "W", "o", "r", "l", "d"} 
); 

Şimdi yalnızca iki argüman, sizin params String[] myList geçirilen gereken bir dizi olmaktan ikincisi geçiyoruz.

+0

ben bunu denedim ve belki de sadece deliriyorumdur .... nesne başlatıcısı hakkında bana bağırdı yemin ederim. Teşekkürler ... şimdi çalışıyor! –

İlgili konular