[C] Domanda su test con CUnit

di il
1 risposte

[C] Domanda su test con CUnit

Salve,
ho creato questo programma per un progetto universitario che è fondamentalmente il gioco delle 20 domande. Per chi non lo sapesse, il giocatore deve pensare ad un oggetto e con 20 o meno domande, a cui si può rispondere SI o NO, il programma deve cercare di indovinare. Potrei postare il codice ma sono 2000+ righe di codice divise in varie librerie, quindi cercherò di riassumervelo anche perchè il problema non riguarda esattamente il codice ma il modo in cui posso testarlo con CUnit.
Le domande e le risposte sono organizzate in una albero binario. Il gioco parte dal menù principale da cui si può scegliere se iniziare una nuova partita, caricare una partita, eliminare un salvataggio, vedere le regole o uscire.
Prendiamo il caso in cui inizio una nuova partita: il programma analizza il nodo radice dell'albero e se è vuoto chiede di inserire l'animale a cui hai pensato, una domanda che lo rappresenta e la risposta (SI o NO) a questa domanda; se è pieno stampa la domanda e resta in attesa della risposta SI o NO e una volta ricevuta si muove sul nodo successivo, analizzandolo e comportandosi di conseguenza.
Spiegata questa funzionalità, è possibile testare con CUnit che il menù venga effettivamente stampato ad inizio gioco o che il programma stampi la domanda se il nodo radice non è vuoto? Il programma è quasi esclusivamente del tipo: stampa qualcosa -> acquisisci scelta del giocatore -> stampa la cosa scelta dall'utente -> acquisisci input dell'utente -> stampa la cosa scelta dall'utente -> ...ecc. quindi, in poche parole, la domanda è: come posso testare che all'acquisizione di quell'input, venga stampato effettivamente ciò che è richiesto?
Spero di essere stato chiaro.
Grazie a chi mi aiuterà.
PS: stavo pensando che forse, se non fosse abbastanza chiaro o comunque per spiegarmelo servisse un esempio sul codice, posso creare un mini programma che fa una cosa simile a quella descritta sopra in piccolo.

1 Risposte

  • Re: [C] Domanda su test con CUnit

    No, l'approccio che hai descritto e' sbagliato.

    Devi pensare ad un unit-test semplicemente come una procedure che:

    1) chiama la FUNZIONE che vuoi TESTARE passandogli SPECIFICI valori, per i quali TU SAI GIA' A PRIORI quale sia il risultato
    2) CONFRONTA il risultato fornito dalla funzione con il risultato CHE TI ASPETTAVI DI AVERE
    3) se il confronto ha successo, non fa nulla, se fallisce, viene generato un errore (di una certa CATEGORIA) con relativo messaggio

    Questo implica che:

    1) il codice va scritto ANCHE IN FUNZIONE del suo utilizzo negli unit test.

    Cioe': NON SEI SOLO TU, o, piu' specificatamente, il programma che implementa il gioco, l'unico fruitore delle funzioni/procedure che stai implementando, MA ANCHE il codice preposto a fare gli unit-test.

    In questo caso, DEVI separare la parte di STAMPA su schermo/LETTURA da console, che ci potrebbe o meno essere, dal codice che AGGIORNA/NAVIGA l'albero delle domande con le relative risposte.

    La stampa su schermo/lettura da console E gli unit-test USANO le funzioni/procedure per aggironare/navigare l'albero.
Devi accedere o registrarti per scrivere nel forum
1 risposte