Ho una funzione C uint8_t command_read(const FILE* const in)
che legge da in
. Mi piacerebbe scrivere un test unitario per la funzione. È possibile creare un FILE*
in memoria per il test poiché vorrei evitare di dover interagire con il filesystem? In caso contrario, quali sono le alternative?Come testare una funzione C con un argomento FILE *
5
A
risposta
9
È possibile creare un FILE * in memoria per il test?
Sicuro. Per scrivere:
char *buf;
size_t sz;
FILE *f = open_memstream(&buf, &sz);
// do stuff with `f`
fclose(f);
// here you can access the contents of `f` using `buf` and `sz`
free(buf); // when done
Questo è POSIX. Docs.
Per la lettura:
char buf[] = "Hello world! This is not a file, it just pretends to be one.";
FILE *f = fmemopen(buf, sizeof(buf), "r");
// read from `f`, then
fclose(f);
Nota a margine:
vorrei evitare il test di dover interagire con il file system.
Perché?
Problemi correlati
- 1. Come testare una funzione statica
- 2. Call wrapper con funzione C++ con funzione come argomento modello
- 3. Come posso testare una funzione con gets.chomp?
- 4. Funzione con un argomento puntatore
- 5. C Prototipo di funzione con argomento Struct
- 6. Puntatore funzione come argomento
- 7. Come passare una funzione casuale come argomento?
- 8. Come testare una funzione che usa Popen?
- 9. Vectorize una funzione su un argomento specifico
- 10. C++ funzione bind per l'uso come argomento di un'altra funzione
- 11. Come testare una funzione sleep in golang
- 12. Emacs: argomento universale (C-u) in una funzione
- 13. nome file vs oggetto file come argomento di funzione
- 14. testare una funzione in jsfiddle
- 15. auto come la funzione argomento
- 16. Come "trasmettere" una funzione a due argomenti in una funzione a un argomento?
- 17. Scala, Passare un operatore come argomento di una funzione
- 18. Come passare ENUM come argomento di funzione in C
- 19. Pass Funzione generica come argomento
- 20. Parametro funzione come argomento in una funzione R
- 21. Come destrutturare un vettore per utilizzarlo come argomento di funzione
- 22. funzione di MATLAB con argomento non richiesto
- 23. Un modo per "visualizzare" un thunk/funzione? O come visualizzare una funzione per un argomento generale
- 24. Funzione C++ passata come argomento modello vs parametro
- 25. Possiamo dichiarare una funzione amico senza argomento?
- 26. Come scrivere funzione C accettare (uno) argomento di qualsiasi tipo
- 27. funzione passando come argomento della funzione
- 28. Passaggio C++ puntatore come argomento in funzione Cython
- 29. Come utilizzare una variabile membro come argomento predefinito in C++?
- 30. Posso comporre una funzione che ha un argomento implicito?
"* Perché? *" - questa è la natura del collaudo dell'unità. Vuoi testare ** la funzionalità del modulo ** senza il coinvolgimento di fattori esterni. Ecco perché le interfacce esterne sono solitamente emulate da stub o qualcosa del genere. – SomeWittyUsername
@icepack Euh, non è irrealistico? Voglio dire, se c'è un errore nell'aprire un file, eppure il test dell'unità passa ... –
L'UT deve iniettare tutti i possibili tipi di input nel modulo controllato. L'apertura del file non riuscita viene facilmente emulata fornendo un gestore NULL alla funzione. Il comportamento previsto dovrebbe essere restituito con errore o asserire. – SomeWittyUsername