Ich habe eine C-Funktion uint8_t command_read(const FILE* const in)
, die von in
liest. Ich möchte einen Komponententest für die Funktion schreiben. Ist es möglich, einen FILE*
im Speicher für den Test zu erstellen, da ich vermeiden möchte, mit dem Dateisystem interagieren zu müssen? Wenn nicht, was sind die Alternativen?Wie Unit-Test eine C-Funktion mit einem FILE * Argument
5
A
Antwort
9
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);
// do stuff with `f`
fclose(f);
// here you can access the contents of `f` using `buf` and `sz`
free(buf); // when done
Dies ist POSIX. Docs.
Zum Lesen:
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);
Nebenbei bemerkt:
Ich möchte den Test vermeiden, die mit dem Dateisystem zu interagieren müssen.
Warum?
Verwandte Themen
- 1. wie Subprocess.call in einem unittest
- 2. eine glog Ausgabe in einem Google Unittest
- 3. Python Unittest: Wie prüfe ich das Argument in einer Exceptions?
- 4. Warum erlaubt eine Funktionsdeklaration mit einem const-Argument den Aufruf einer Funktion mit einem nichtkonstanten Argument?
- 5. Wie übertrage ich Daten von einem UnitTest zu einem LoadTest?
- 6. Wie kann ich eine Funktion mit einem abgeleiteten Argument in eine Funktion mit einem Basisargument umwandeln?
- 7. in einem File-Objekt
- 8. Python Unittest für argparse
- 9. Terminal File ersetzen testA mit einem
- 10. Wie importiere ich eine Klasse aus Unittest in Python?
- 11. Wie UnitTest diese Methode richtig?
- 12. Testing ZMQ Steckdosen mit Unittest
- 13. Wie scheitert ein Python-Unittest in setUpClass?
- 14. Vectorize eine Funktion zu einem bestimmten Argument
- 15. django unittest Importfehler
- 16. SQLiteDatabase UnitTest
- 17. Python-Unittest-Erkennung mit Unterordnern
- 18. Unittest Vs pytest
- 19. Python Unittest und Objektinitialisierung
- 20. Eine v8 JavaScript-Funktion aus C++ mit einem Argument aufrufen
- 21. File-Modus mit msysgit
- 22. Wie bekomme ich Powershell, um den richtigen Exit-Code zurückzugeben, wenn mit dem Argument -File aufgerufen?
- 23. python unittest count tests
- 24. gdb debug mit mehr als einem Argument
- 25. rekursive Unittest entdecken
- 26. AppEngine python unittest Aufgabenwarteschlange
- 27. Python Unittest assertRaises
- 28. Kann Python's Unittest parallel testen, wie Nase?
- 29. Wie für eine Annotation Argument
- 30. std :: vector mit einem Template-Argument
"* Warum? *" - das ist die Art der Komponententests. Sie möchten ** Ihre Modulfunktionalität ** ohne Einbeziehung externer Faktoren testen. Aus diesem Grund werden externe Schnittstellen normalerweise durch Stubs oder ähnliches emuliert. – SomeWittyUsername
@icepack Euh, ist das nicht unrealistisch? Ich meine, wenn es einen Fehler beim Öffnen einer Datei gibt, aber der Komponententest besteht ... –
UT sollte alle möglichen Arten von Eingaben in das geprüfte Modul injizieren. Das Öffnen fehlgeschlagener Dateien kann problemlos emuliert werden, indem der Funktion ein NULL-Handler bereitgestellt wird. Das erwartete Verhalten sollte mit Fehler zurückgegeben oder bestätigt werden. – SomeWittyUsername