5 Stimmen

Wie man eine C-Funktion mit einem FILE*-Argument unit testet

Ich habe eine C-Funktion uint8_t command_read(const FILE* const in) , die von in liest. Ich würde gerne einen Unit-Test für die Funktion schreiben. Ist es möglich, ein FILE* im Speicher für den Test zu erstellen, da ich den Dateisystemzugriff vermeiden möchte? Wenn nicht, was sind die Alternativen?

9voto

Ist es möglich, eine FILE* im Speicher für den Test zu erstellen?

Sicher. Zum Schreiben:

char *buf;
size_t sz;
FILE *f = open_memstream(&buf, &sz);

// Arbeitsablauf mit 'f'

fclose(f);
// hier können Sie auf den Inhalt von 'f' mit 'buf' und 'sz' zugreifen

free(buf); // wenn fertig

Dies ist POSIX. Dokumente.

Zum Lesen:

char buf[] = "Hallo Welt! Dies ist keine Datei, sie gibt nur vor, eine zu sein.";
FILE *f = fmemopen(buf, sizeof(buf), "r");
// von 'f' lesen, dann
fclose(f);

Auch das ist POSIX.

Anmerkung:

Ich würde gerne vermeiden, dass der Test mit dem Dateisystem interagieren muss.

Warum?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X