2010-12-17 6 views
3

Ich habe einen Test wie folgt aus:NUnit Verwendung von Testcase Klarheit benötigt

[TestCase(12, Result= typeof(mytype))] 
public mytype GetById(int id) 
{ 
yada, yada, yada. 

} 

in the NUnit error window, I see this: 

Test.Tester.GetById(12): 
    Expected: <mytype> 
    But was: <mytype> 

Meine Frage ist, wird dies zu erwarten? Gibt es eine Möglichkeit, den Typ des zurückgegebenen Werts anzugeben, wenn es sich um einen eigenen Typ und nicht um eine Ganzzahl, eine Zeichenfolge usw. handelt? Alle Beispiele, die ich im Internet finde, geben nur Strings oder Ints zurück. Muss ich tatsächlich eine MyType-Instanz generieren und sagen, dass es das ist, was ich erwarte?

Dies ist NUnit 2.5.9.

Antwort

0

Ich habe nicht gesehen, dass das Ergebnis so zuvor übergeben wurde. Könnten Sie das Ergebnis nicht einfach als weiteren Parameter übergeben?

[TestCase(12, 1)] 
public mytype GetById(int id, int result) 
{ 
    Assert.AreEqual(12, 1); 
} 

und es besagt, wahrscheinlich das offensichtlich, aber voraussichtlich aber war: klingt sehr wie das, was Sie bekommen würden, wenn Sie „true“ mit echten vergleichen.

1

Testfall Ergebnis = ... prüft den Ergebniswert und nicht den Ergebnistyp.

Die Fehlernachricht ist irreführend, weil type.ToString() und die Object.ToString() führen in der gleichen messge

außer Kraft setzen Ihre myTpe.ToString() -Methode und die Fehlernachricht wird sich

Expected: <mytype> 
But was: {your ToString() result goes here} 

diese Tests (nomit 2.5.7) funktionieren wie erwartet

[TestCase(12, Result = "0")] 
    public String GetById(int id) 
    { 
     return "0"; 
    } 

    [TestCase(12, Result = typeof(mytype))] 
    public System.Type GetByIdType(int id) 
    { 
     return typeof(mytype); 
    } 
+0

Danke. Ich hatte gehofft, ich könnte das Objekt tatsächlich zurückgeben (und den Typ überprüfen) und dann mehrere miteinander verkettete Testfälle verwenden, wobei jeder seine Überprüfung auf dem Weg durchführt und sein Ergebnis an den Aufrufer zurücksendet. – adamx97