Questo metodo di scrittura dei Test unitari è corretto?

4

Ho creato un piccolo progetto C # per aiutarmi a imparare come scrivere buoni test unitari. So che una delle regole più importanti per il test delle unità è quella di testare la più piccola 'unità' di codice possibile in modo che se fallisce si sa esattamente quale parte del codice deve essere riparata. Ho bisogno di aiuto con quanto segue prima di continuare ad implementare più unit test per il progetto:

Se ho una classe Car , ad esempio, che crea un nuovo oggetto Car che ha vari attributi che vengono calcolati quando viene chiamato il suo metodo di costruzione, i due test seguenti verranno considerati come overkill? Dovrebbe esserci un test che verifica tutti gli attributi calcolati dell'oggetto Car invece?

    [Test]
    public void CarEngineCalculatedValue()
    {
        BusinessObjects.Car car= new BusinessObjects.Car();
        Assert.GreaterOrEqual(car.Engine, 1);
    }

    [Test]
    public void CarNameCalculatedValue()
    {
        BusinessObjects.Car car= new BusinessObjects.Car();
        Assert.IsNotNull(car.Name);
    }

Devo avere i due metodi di test sopra descritti per testare queste cose o dovrei avere un metodo di test che asserisce che l'oggetto Car è stato creato per la prima volta e poi testare queste cose nello stesso metodo di test?

    
posta Theomax 11.07.2012 - 15:25
fonte

2 risposte

16

Per me, un caso di test unitario (metodo) dovrebbe testare un singolo scenario di test. Questo potrebbe richiedere più asserzioni, e IMO va bene. Poiché entrambi i metodi di test stanno esercitando lo stesso scenario (creando un oggetto e assicurando che sia in uno stato iniziale coerente), li unirei in un singolo caso di test.

Riguardo a come discernere cosa esattamente fallito da più affermazioni, tutti i metodi di asserzione che posso pensare hanno sovraccarichi con un parametro di messaggio in più - usalo saggiamente per fornire messaggi di errore chiari.

    
risposta data 11.07.2012 - 15:32
fonte
8

Preferirei l'approccio con due metodi. Quando uno muore, sai esattamente perché è morto e può risolverlo più velocemente. Non è necessario testare tanto se i requisiti cambiano parte degli attributi.

Detto questo, non è la cosa peggiore al mondo raggruppare alcuni assegni banali come questi in un 'auto viene costruita correttamente?' prova.

I test esistono a tuo vantaggio, quindi fai ciò che ti offre di più. Se i piccoli test sono così fastidiosi da non essere scritti, è molto peggio del piccolo problema di raggrupparli.

    
risposta data 11.07.2012 - 15:34
fonte

Leggi altre domande sui tag