Aktualisierung (Juli 2021)
Meine ursprüngliche Antwort ist schon eine ganze Weile her (fast 12 Jahre), und die bewährten Verfahren haben sich in dieser Zeit stark verändert. Daher fühle ich mich veranlasst, meine Antwort zu aktualisieren und den Lesern verschiedene Benennungsstrategien anzubieten.
In vielen Kommentaren und Antworten wird darauf hingewiesen, dass die von mir in meiner ursprünglichen Antwort vorgeschlagene Benennungsstrategie nicht resistent gegen Refactorings ist und zu schwer verständlichen Namen führt, und ich stimme dem voll und ganz zu.
In den letzten Jahren bin ich dazu übergegangen, ein besser lesbares Benennungsschema zu verwenden, bei dem der Testname beschreibt, was wir testen wollen, und zwar in der Zeile, die durch Wladimir Chorikow .
Einige Beispiele wären:
Add_credit_updates_customer_balance
Purchase_without_funds_is_not_possible
Add_affiliate_discount
Wie Sie sehen, ist es ein recht flexibles Schema, aber das Wichtigste ist, dass Sie beim Lesen des Namens wissen, worum es bei dem Test geht, ohne technische Details einzubeziehen, die sich im Laufe der Zeit ändern können.
Bei der Benennung der Projekte und Testklassen halte ich mich noch an das ursprüngliche Antwortschema.
Ursprüngliche Antwort (Oktober 2009)
Ich mag Roy Osheroves Strategie der Namensgebung . Es geht um Folgendes:
[UnitOfWork_StateUnderTest_ExpectedBehavior]
Sie enthält alle erforderlichen Informationen über den Namen der Methode und in strukturierter Form.
Die Arbeitseinheit kann so klein wie eine einzelne Methode, eine Klasse oder so groß wie mehrere Klassen sein. Sie sollte alle Dinge repräsentieren, die in diesem Testfall getestet werden sollen und unter Kontrolle sind.
Für Baugruppen verwende ich die typische .Tests
Endung, die meines Erachtens recht weit verbreitet ist, und die gleiche für Klassen (die mit Tests
) :
[NameOfTheClassUnderTestTests]
Früher habe ich Fixture als Suffix anstelle von Tests verwendet, aber ich denke, letzteres ist gebräuchlicher, also habe ich die Benennungsstrategie geändert.
1 Stimmen
Siehe hier: stackoverflow.com/questions/96297/
2 Stimmen
Dies ist zwar keine Antwort auf Ihre Frage, aber es lohnt sich, es zu lesen: haacked.com/archive/2012/01/02/structuring-unit-tests.aspx
6 Stimmen
Google Style Guide sagt:
test<MethodUnderTest>_<state>
z.B.testPop_emptyStack
google-styleguide.googlecode.com/svn/trunk/javaguide.html 5.2.3 Methodennamen. Im Zweifelsfall sollte man Google folgen.5 Stimmen
@CiroSantilli Und im nächsten Satz heißt es: "Es gibt keinen einzig richtigen Weg, Testmethoden zu benennen". Stellen Sie sich vor.