Va bene consentire a un'asserzione personalizzata di restituire qualcosa?

0

Questo linguaggio è indipendente. Voglio sviluppare una semplice classe di asserzioni personalizzate utilizzando lo sviluppo basato su test.

La classe avrà un metodo di asserzione chiamato assertCarIsNotDamaged che controllerà se l'auto di una persona non ha danni. Controllerà una mappa hash delle parti di auto e il loro stato desiderato con lo stato delle parti della macchina di una persona.

Ad esempio, diciamo che "windShieldStatus" di una buona auto dovrebbe essere "ok" e il "windShieldStatus" della persona è "rotto". Data questa condizione, l'asserzione dovrebbe generare un errore con queste informazioni.

Il mio problema: ho una sfida nel testare l'unità. Devo fare in modo che l'asserzione restituisca una mappa hash di valori errati e chiedi alle mie unittests di verificare che l'asserzione non sia riuscita solo a causa di esattamente questi cattivi valori e senza altri motivi? Le affermazioni dovrebbero sempre non restituire nulla?

Purtroppo, ho dei limiti. Mi è stato detto di non modificare la classe "CarStatus". Quindi, fondamentalmente, non posso scrivere un metodo di uguaglianza per verificare se gli stati delle auto corrispondono. Devo usare un'asserzione personalizzata per controllare l'uguaglianza degli oggetti. (IDK perché qualcuno lo vuole in questo modo;) ).

    
posta Borat Sagdiyev 13.10.2016 - 20:16
fonte

1 risposta

6

Che dire

 Test IsCarOK
   assert(IsWindshieldOK, Yes)
   assert(AreTiresOK, Yes)
   ....etc.

Qualsiasi affermazione errata comporterà il fallimento del test. Anche se quello che stai descrivendo è più una funzione piuttosto che un test.

Dovrai configurare i casi di test impostando windowOK to broken e poi assert (iscarOK, No) che sarebbe un test corretto per una macchina rotta, e dovrai menzionare esplicitamente i valori errati e menzionare esplicitamente i valori buoni. Potrebbe esserci un modello di progettazione più semplice per ciò che stai tentando di fare.

    
risposta data 13.10.2016 - 20:42
fonte

Leggi altre domande sui tag