Attualmente sto lavorando a un piccolo progetto per me stesso e lo sto utilizzando come un'opportunità per familiarizzare con i test delle unità e la corretta documentazione.JUnit Metodo di prova con carattere casuale
Ho una classe Deck
con rappresenta un mazzo di carte (è molto semplice e, per essere onesti, posso essere sicuro che funzioni senza un test di unità, ma come ho detto mi sto abituando a usare i test unitari) e ha un metodo shuffle()
che cambia l'ordine delle carte nel mazzo.
L'applicazione è molto semplice e certamente lavorare:
public void shuffle()
{
Collections.shuffle(this.cards);
}
Ma, come ho potuto implementare un test di unità per questo metodo. Il mio primo pensiero è stato quello di verificare se la prima carta del mazzo fosse diversa dopo aver chiamato shuffle()
ma c'è ovviamente la possibilità che sarebbe lo stesso. Il mio secondo pensiero è stato quello di verificare se l'intero ordine delle carte è cambiato, ma ancora una volta potrebbero essere nello stesso ordine. Quindi, come potrei scrivere un test che garantisce che questo metodo funzioni in tutti i casi? E, in generale, come si possono testare i metodi per i quali l'esito dipende da una casualità?
Cheers,
Pete
Da un punto di vista logico, le tue carte saranno considerate mescolate se l'ordine è rimasto lo stesso? –
Per la tua ultima domanda, consulta http://stackoverflow.com/questions/122741/testing-for-random-value-thoughts-on-this-approach. Penso anche che D. Knuth abbia un intero capitolo a riguardo. – ewernli
Penso che abbia senso considerare il mazzo mischiato se le carte rimangono nello stesso ordine e si è verificato un nuovo riordino, anche se è improbabile che sia possibile rimescolare un vero mazzo di carte nello stesso ordine in cui erano originariamente in. – Peter