2009-05-28 13 views
3

Ich führe einen NUnit-Test über eine Liste von Zahlen.Lassen Sie NUnit nicht beim ersten Fehler stoppen

Mein Code geht in etwa so:

numbers = GetListOfNumbers() 
foreach number in numbers 
     Assert.IsTrue(TestNumber(number)) 

Mein Problem ist, dass NUnit den Test auf der ersten Zahl stoppt sie trifft, die den Test nicht bestehen.

Gibt es trotzdem, um NUnit immer noch den Test fehlschlagen, wenn irgendwelche Zahlen nicht bestehen, aber geben Sie mir die Liste aller Zahlen, die nicht bestehen?

Antwort

7

Als Abhilfe können stattdessen eine Assert.IsTrue wie das verwenden, können Sie so etwas wie versuchen könnte:

numbers = GetListOfNumbers() 
List<number> fails = numbers.Where(currentNum=>!TestNumber(curentNum)) 
if (fails.Count > 0) 
    Assert.Fail(/*Do whatever with list of fails*/) 
+0

currentNum =>! TestNumber (currentNum) – GalacticCowboy

+0

Whoops! Guter Fang, behoben. – GWLlosa

+0

Konnten Sie nicht behaupten, dass das fehlschlägt. Count ist null? –

0

Dies kann in MBUnit mit einer "RowTest" -Testmethode durchgeführt werden. Ich bin mir in NUnit jedoch nicht bewusst, wie das geht.

+0

Mit MbUnit v3, können Sie auch die Verwendung nicht so bekannt „Assert .Multiple (() => {...}) ". –

6

NUnit 2.5 hat datengetriebene Tests; Dies wird genau das tun, was Sie brauchen. Es wird über alle Ihre Daten iterieren und individuelle Testfälle für jede Nummer generieren.

Link

+0

Süß! Das hatte ich noch nie gesehen. (Natürlich habe ich NUnit schon eine ganze Weile nicht mehr angeschaut - ich benutze meistens MBUnit und MSTest ...) – GalacticCowboy

+0

Das mache ich schon. Ich habe ungefähr 30 Dateien und jede Datei kann bis zu 40 000 Nummern enthalten. Ich verwende das TestCaseSource-Attribut, um einen Test pro Datei zu generieren. Einen Test für jede Nummer zu generieren wäre viel zu langsam und umständlich. – Ray

+0

Sie müssen also regelmäßig 700.000 Nummern testen? – GalacticCowboy

Verwandte Themen