Standard del nome del metodo di test unitario per i metodi sovraccaricati

4

Ho letto diversi post che discutono lo standard di codifica per denominare i metodi di test unitari per migliorare la leggibilità.

Seguo questo NameOfMethod_ExpectedBehavior_WhenSomeScenario , ma ora sono confuso su come dovrei continuare con questo in caso di metodi sovraccaricati. Ci possono essere diversi metodi con lo stesso nome ma diverse firme.

Qualcuno può suggerirmi come incorporare l'overloading nei nomi dei metodi?

Ad esempio: codice Java

class ClassUnderTest{
    public int method1(){
    }

    public int method1(int arg){
    }
}

Ora ho bisogno di testare entrambi i metodi individualmente dal mio caso di test. Sto pensando ad alcuni standard applicabili a questo scenario.

    
posta Narendra Pathai 03.01.2014 - 09:18
fonte

3 risposte

2

Il sovraccarico in fase di test non ha molta importanza. Lo stato gestisce davvero la decisione di quale sovraccarico chiamare.

Quindi, se hai un metodo ToString su un oggetto DateTime con uno che non accetta argomenti e uno che accetta una stringa di formato avresti.

ToString_1-3-2014T00:00:00_JanThirdDefaultFormat

e

ToString_1-3-2014_JanThirdDateOnly
    
risposta data 03.01.2014 - 14:22
fonte
1

Poiché i metodi di test in genere non hanno firme diverse (credo che raramente avranno parametri), è necessario un modo diverso per distinguerli. Finché la parte WhenSomeScenario è diversa per diversi overload, non devi fornire alcuna misura speciale:

 MyMethod_Returns0_WhenCalledWith1     // testing MyMethod(int)
 MyMethod_Returns0_WhenCalledWith1_2   // testing MyMethod(int,int)

lo fa.

Se ciò non funziona in casi specifici, perché hai scenari più astratti da testare, dove i nomi non riflettono direttamente i parametri di input, hai bisogno di qualcosa di simile

  NameOfMethodSignaturecode_ExpectedBehavior_WhenSomeScenario

Devi ancora decidere cosa compilare per Signaturecode , dipende un po 'dal tuo gusto personale. Quando sei disposto ad usare nomi di metodo molto lunghi, puoi semplicemente aggiungere una concatenazione dei nomi dei tipi, come

 MyMethodInt_Returns0_WhenCalledBeforeInitialization     // testing MyMethod(int)
 MyMethodIntInt_Returns0_WhenCalledBeforeInitialization // testing MyMethod(int,int)

Se ritieni che i nomi dei metodi diventino troppo lunghi in quel modo, devi usare una sorta di carenza per i nomi di tipo (ad esempio, analogo alle carenze in Notazione ungherese ). Quello che eviterei è di usare una sorta di indice 1,2,3, ... per distinguere i metodi di test, questo non ti dà la minima idea su quale sia il metodo di test per quale sovraccarico.

    
risposta data 03.01.2014 - 09:49
fonte
1

I metodi in genere richiedono più di un test unitario. Nella maggior parte dei casi ho trovato GIVEN ... WHEN ... THEN in modo da essere superiore. Va bene avere più test che dicono GIVEN _... WHEN_overloaded_method_THEN ...

I nomi dei metodi diventano piuttosto lunghi ma non importa perché non vengono mai chiamati esplicitamente.

    
risposta data 04.11.2017 - 23:05
fonte

Leggi altre domande sui tag