2009-09-14 3 views
15

Poiché la denominazione di un metodo di test unitario rende il suo scopo più significativo, è necessario aggiungere un riepilogo a un metodo di test unitario?È necessario un riassunto nel metodo di test unitario

Esempio:

/// <summary> 
/// Check the FormatException should be thrown when a give country data line contains a invalid number. 
/// </summary> 
[TestMethod] 
public void FormatException_Should_Thrown_When_Parse_CountryLine_Containing_InvalidNumber() 
{ 
    ... 
} 
+0

Qualcun altro vede Skeet rispondere in modo strano quindi cancellarlo quasi subito dopo? – Will

+0

@Will - sì, l'ho notato anche io. –

+0

@ Will- importa? – RichardOD

risposta

9

Penso che il nome descrittivo lungo sia più importante del commento XML. Poiché il test unitario non farà parte di un'API, non è necessario il commento XML.

Per esempio:

[TestMethod] 
public void FormatException_Should_Thrown_When_Parse_CountryLine_Containing_InvalidNumber() 
{ 
    ... 
} 

è più utile di:

///<summary> 
/// Exception Should Thrown When Parse CountryLine Containing InvalidNumber 
///</summary> 
[TestMethod] 
public void Test42() 
{ 
    ... 
} 

XML Commenti dovrebbero essere usati per documentare le API e framework.

+0

+1 da parte mia. Inoltre non ho mai visto documentazione dai test unitari. Se il codice è ben composto dovrebbe essere auto-descrittivo. Questo è tipico se usi i metodi Composed- http://c2.com/ppr/wiki/WikiPagesAboutRefactoring/ComposedMethod.html – RichardOD

0
Non

necessario, ma se si sente i commenti XML aggiungono valore al di sopra e al di là del nome del test dell'unità stessa (che sembra essere completo) quindi vi ritroverete a fare altro gli sviluppatori un servizio.

Se il riepilogo è essenzialmente un duplicato diretto del nome del metodo di test dell'unità, allora penso che sia eccessivo.

1

Personalmente, provo a rendere i test abbastanza facili da leggere che la documentazione sarebbe ridondante. Uso i commenti incorporati all'interno del metodo di prova per spiegare perché Sto facendo qualcosa in un modo particolare, non cosa sto facendo.

-1

Se pensi che sia il miglior uso del tuo tempo, fallo, altrimenti no. Non lo farei

0

Per l'esempio sopra, direi che non è necessario, a meno che non si utilizzi uno strumento che estrae la documentazione dal codice sorgente (come javadoc o qualcosa del genere).

Una regola empirica comune è che il codice dice quello che stai facendo e il commento dice perché, ma dal momento che il nome è molto verboso (che penso sia ok, dal momento che nessuno deve mai scriverlo) I non pensare che il commento contribuisca a qualcosa.

0

È necessario aggiungere un sommario quando il sommario può fornire più informazioni che possono/dovrebbero essere codificate nel nome del metodo. Tieni presente che quando dico "necessario" quando mi riferisco a qualsiasi documentazione, intendo dire che "è necessario trasmettere il 100% del contesto/dettagli/sfumature necessari a un nuovo codificatore che eredita il progetto oa te stesso 5 anni dopo".

37

In realtà preferisco utilizzare DescriptionAttribute su un tag di riepilogo. Il motivo è che il valore dell'attributo Descrizione verrà visualizzato in un file dei risultati. Rende i guasti più facile da capire quando si sta solo guardando un file di log

[TestMethod,Description("Ensure feature X doesn't regress Y")] 
public void TestFeatureX42() { 
    .. 
} 
+0

Questo viene mostrato nell'elenco di test che può essere utile. – Will

+0

+1. Sì, sembra una buona idea. – RichardOD

+0

+1 anche da me. La convenzione di denominazione per i metodi dovrebbe essere mantenuta per tutti i progetti, compresi quelli di test: quale ragionevole ragione è inserire un riassunto o una descrizione nel nome del metodo invece di posti progettati per conservare tali dati? – Spook

0

un commento XML è del tutto inutile se si dispone di un nome di metodo descrittivo. Ed è un must per i metodi di test unitario.

Sei già sulla strada giusta con un nome descrittivo del metodo di prova. (Molti professionisti del TDD e agili credono che un metodo di test dovrebbe includere "dovrebbe", ad esempio come mostrato in link text questo post del blog.

Personalmente, mi piace nomi di metodo come questo:

MyClass_OnInvalidInput_ShouldThrowFormatException() 

Ma questa è solo la mia preferenza personale.