Utilizzo di proiettori durante i test unitari

3

Sto cercando di capire l'uso di proiettori nel contesto di modelli di test unitari in un sistema MVC web.

Il problema che sto cercando di capire è che i dati delle apparecchiature non forniscono una rappresentazione reale dei dati che il sistema accetta.

Un semplice esempio è che ho un modello utente con convalida e-mail. Le fixture ignoreranno la validazione, quindi i test potrebbero testare dati non validi.

Modifica: Quello che sto cercando di ottenere è che non avrebbe più senso creare i dati di test attraverso la logica di business dell'applicazione?

Quindi, per l'esempio dell'email, se uno sviluppatore creava accidentalmente un'apparecchiatura con un'e-mail che non superava la convalida, ciò poteva causare falsi negativi nei test (ad esempio, testare l'invio di e-mail avrebbe esito negativo perché la fixture ha dati non validi).

L'esempio dell'email probabilmente non è il migliore, ma spero che abbia più senso in quello che sto cercando di ottenere?

    
posta Rowan 06.02.2014 - 10:46
fonte

2 risposte

4

in the context of unit testing

wouldn't it make more sense to create the test data through the application business logic?

In alcuni casi, potrebbe essere un test più utile da scrivere. Ma sappi che sei uscito dal regno dei test unitari e dei test di integrazione. Entrambi sono necessari.

if a developer accidentally created a fixture with an email that would not pass validation, this could cause false negatives

Direi che dovresti intenzionalmente creare input di test non validi e verificare che la tua unità lo gestisca in modo appropriato. Se lo fai per ogni unità, il tuo codice diventa più robusto .

In altre parole, testare dati non validi ti costringe a codificare in modo difensivo, che è una buona cosa.

    
risposta data 06.02.2014 - 22:03
fonte
1

I test che trasmettono dati non validi a un codice in prova indicano se tale codice reagisce correttamente a tali dati.

Ad esempio, quando un metodo che non ha specificamente bisogno di accettare parametri nulli ne riceve uno, deve essere lanciato immediatamente un IllegalArgumentException per evitare un errore meno ovvio in seguito. Anche se questo codice si trova dietro un'interfaccia che impedisce a quei valori nulli di propagarsi nel codice in prova, non fa male verificare il comportamento delle eccezioni.

In molte applicazioni Web, i dati vengono convalidati in Javascript prima di essere inoltrati al server, tuttavia è possibile eludere JavaScript, pertanto la convalida (e il test di convalida) devono essere inclusi nel codice lato server.

    
risposta data 06.02.2014 - 17:35
fonte

Leggi altre domande sui tag