2016-10-03 2 views
1

Ich erstelle Komponententests für eine ASP.NET MVC-Anwendung in C# mit NUnit.Einheit Testbestellkonvention?

Kurzversion: Soll ich meine Testmethoden alphabetisch oder im Auftrag der Methoden der zu testenden Klasse bestellen?

Zum Beispiel: sagen, dass ich die Klasse testen wollen:

public class MyClass{ 
    public void B(){} 
    public void A(){} 
    public void C(){} 
} 

es richtig sein, würde für mich, meine Testklasse zu strukturieren, wie so ...

[TestFixture] 
public class MyClassTests{ 
     [Test]public void Test_B(){} 
     [Test]public void Test_A(){} 
     [Test]public void Test_C(){} 
    } 

oder wie dies ist ...

Eine einfache Frage, die ich kenne, aber ich konnte keine conve finden Dies ist von meinem Googeln her nur eine Konsequenz für die Benennung von Testmethoden. Danke für Ihre Hilfe!

+1

Ich denke, dass der erste der richtige Weg ist zu gehen ..... – Hackerman

+1

Ich würde gruppieren nach dem, was sie zuerst testen. Zum Beispiel alles, was mit X-Aspekt zusammen zu tun ist, dann mit Y-Aspekt der Klasse usw. So würde ich versuchen, visuell zu scannen, um einen bestimmten Test zu finden. Verwende '# region'' # endregion', um es sauber zu halten. – Wurd

+2

Verwenden Sie keine Regionen, sie sind der Fluch des lesbaren Codes –

Antwort

3

Ich würde sie auf die erste Weise tun.

Ich würde auch Test_ aus Ihren Testnamen entfernen, da es redundante Benennung ist.

Die beste Namenskonvention ich für die Benennung von Tests gesehen haben, ist:

MethodName_ContextOfTest_ResultOfTest

Beispiel:

A_WithNullString_ThrowsException

macht es sehr einfach, Ihre Tests zu schreiben spezifisch zu testen Dinge, und es macht es viel einfacher für andere zu verstehen, was Sie auch testen.

+0

Danke für die schnelle Antwort und den Tipp auch. Ich werde dies als die akzeptierte Antwort auswählen, aus irgendeinem Grund muss ich 5 Minuten warten, um dies zu tun. – Reddy

1

Wenn Sie auf NUnit 3 aktualisieren (oder es bereits verwenden), können Sie das Attribut [Order] verwenden und dann müssen Sie Ihre Testnamen nicht ändern. Siehe die Dokumentation für die NUnit Order Attribute.

public class MyFixture 
{ 
    [Test, Order(1)] 
    public void TestA() { ... } 


    [Test, Order(2)] 
    public void TestB() { ... } 

    [Test] 
    public void TestC() { ... } 
}