Sono un n00b al test di unità. Ho installato FsCheck.Nunit
e NUnitTestAdapter
da Nuget e sto provando a fare test basati sulle proprietà, in gran parte ispirati a the inestimable Scott Wlaschin.Come posso riprovare un test basato sulla proprietà se gli input generati casualmente non sono utili?
Sto usando l'attributo [<Property>]
, e vorrei la possibilità di "saltare" gli ingressi che non soddisfano i requisiti della prova:
[<Property(MaxTest=10)>]
let ``Calling unzipTo with an invalid destination will yield a failure.`` badDest =
if Directory.Exists(badDest)
then // somehow skip to the next randomized input
else // do the actual test
Qual è il modo più semplice per fare questo?
Preferirei una risposta per FsCheck/NUnit se esiste, ma prenderei in considerazione qualsiasi altro framework i cui test possano essere eseguiti in Visual Studio. (Pensavo di aver visto qualche framework dove c'era una semplice funzione per fare esattamente questo, ma non riesco a capire di cosa si trattasse.)
Ho preferito FsCheck.NUnit finora perché può generare input casuali per F # tipi (sindacati discriminati, ecc.) senza ulteriore lavoro.
È necessario un generatore personalizzato. –
IIRC per l'istruzione then è sufficiente restituire il risultato che indica il test riuscito senza eseguire il test. Qualcosa di semplice come "vero" potrebbe funzionare.Mi sono imbattuto in questi anni fa e il problema è stato il pensiero eccessivo. Ricorda che il test è solo una funzione e il test driver vuole solo un risultato che indichi il successo o l'insuccesso, quindi dargli un successo. –
@Guy Coder Lo sfregio è che voglio che il test venga ripetuto con diversi input casuali se quelli generati non sono utili - Non voglio che la funzione venga eseguita molte volte con input inadatti e dichiari un successo se non ha mai effettivamente eseguito il test. –