2013-03-23 16 views

Odpowiedz

9

Czy można utworzyć PLIK * w pamięci do testu?

Pewnie. Do pisania:

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 

To jest POSIX. Docs.

do odczytu:

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); 

This is POSIX too.

Sidenote:

Chciałbym uniknąć test mający na interakcję z systemem plików.

Dlaczego?

+2

"* Dlaczego? *" - taka jest natura testów jednostkowych. Chcesz przetestować ** funkcjonalność swojego modułu ** bez udziału czynników zewnętrznych. Dlatego interfejsy zewnętrzne są zwykle emulowane przez kody pośredniczące lub coś w tym rodzaju. – SomeWittyUsername

+1

@icepack Euh, czy to nie jest takie nierealne? Mam na myśli, jeśli wystąpi błąd podczas otwierania pliku, ale test jednostkowy przechodzi ... –

+0

UT powinien wstrzyknąć wszystkie możliwe rodzaje danych wejściowych do sprawdzanego modułu. Nieudane otwarcie pliku można łatwo emulować, udostępniając funkcję NULL dla tej funkcji. Oczekiwane zachowanie powinno zostać zwrócone z błędem lub potwierdzeniem. – SomeWittyUsername

Powiązane problemy