Cunit in c

Cunit in c

System CUNIT służy do przeprowadzenia testów jednostkowych w C, co umożliwia podawanie i wykonywanie testów. Obejmuje zróżnicowany zakres twierdzeń do testowania powszechnie używanych typów danych i wykorzystuje prostą architekturę do tworzenia struktur testowych. Kod testowy użytkownika jest połączony z Cunit, który został zaprojektowany jako biblioteka statyczna. Możemy zbadać wydajność zadań i funkcji programu C za pomocą frameworka testowego CUNIT. Każde konkretne zadanie programu C ma różne okoliczności wejściowe i ograniczenia wyjściowe. Aby użyć CUNIT do testowania programu C, powinniśmy go najpierw zainstalować w naszym systemie. Kroki instalacji CUNIT są przedstawione poniżej.

Jak korzystać z frameworka Cunit w Ubuntu 22.04

Aby wykorzystać framework testowania CUNIT w naszym systemie, musimy wykonać etapy instalacji. Kroki te dotyczą Ubuntu 22.04 System. Przed instalacją najpierw zaktualizowaliśmy nasz system. System wymagał przywileju sudo, aby zostać zaktualizowanym za pomocą polecenia Apt.


Aby uzyskać uprawnienia Sudo, terminal zapytał uwierzytelnianie od użytkownika Sudo. Następnie zaktualizuj pakiety systemowe i ich zależności, jak pokazano poniżej.


Teraz zainstalowaliśmy framework cunit za pomocą następującego polecenia. To polecenie może zainstalować pakiety LibCunitl, LibCunitl-Doc i LIBCUNITL-DEV z repozytorium pakietów.


Po wykonaniu polecenia instalacji Cunit wymagane jest hasło użytkownika. Pakiety Cunit Essential zostały zainstalowane w naszym Ubuntu 22.04.

Przykład 1

Ukończyliśmy etap instalacji framework CUNIT w poprzednim rozdziale. Teraz przetestowaliśmy metodę sum i różnicę, aby zobaczyć oczekiwane wyniki w poniższym przykładzie przy użyciu frameworka testowania cunit.

#włączać
#włączać
#włączać
#włączać
#include "cunit/podstawa.H"
int init_suite (void) return 0;
int clean_suite (void) return 0;
int mySum (int a1, int b1)

int res1;
Res1 = A1+B1;
return res1;

int mydiff (int a2, int b2)

int res2;
res2 = a2-b2;
return res2;

void test_mysum (void)

Cu_assert (4 == mysum (2,2));
Cu_assert (8 == mysum (5,3));
Cu_assert (2 == mysum (-2,4));
Cu_assert (7 == mysum (0,7));

void test_mydiff (void)

Cu_assert (3 == mydiff (5,2));
Cu_assert (-4 == myDiff (4,8));
Cu_assert (-7 == myDiff (-3,4));
Cu_assert (-9 == myDiff (0,9));

int Main (void)

Cu_psuite psuite1, psuite2 = null;
if (cue_success != Cu_initialize_registry ())
return cu_get_error ();
Psuite1 = cu_add_suite („test Suite1”, init_suite, clean_suite);
if (null == psuite1)
Cu_cleanup_registry ();
return cu_get_error ();

if ((null == cu_add_test (Psuite1, "\ n \ nsum Funkcja testowanie \ n \ n", test_mysum)))))))))))))))

Cu_cleanup_registry ();
return cu_get_error ();

if ((null == cu_add_test (Psuite1, "\ n \ ndifference Funkcja testowanie \ n \ n", test_mydiff)))))))))))))))

Cu_cleanup_registry ();
return cu_get_error ();

Cu_basic_run_tests ();
Cu_cleanup_registry ();
return cu_get_error ();





Najpierw, aby wygenerować strukturę CUNIT, wstawiliśmy bibliotekę Cunit „Cunit/Basic.h ”z dołączonym słowem kluczowym. Ta biblioteka C jest przeznaczona do frameworków testowania jednostek i oferuje prosty interfejs wyjściowy konsoli. Następnie dodaliśmy dwie funkcje „init_suite” do inicjalizacji funkcji apartamentu i „Clean_suite” do oczyszczania funkcji apartamentu, do naszego programu do testowania.

Następnie skonstruowaliśmy metody, „mysum” i „mydiff”, które będą przetestowane przez cunit. Nazwaliśmy konstruktor tych funkcji, który zawiera zmienne, na których wykonano operacje sum i różnicy. Następnie ustaliliśmy funkcję jako „test_mysum” do przetestowania. Wewnątrz funkcji zastosowaliśmy metodę „cu_assert”, w której przypisane są wyrażenia init dla sumy. Tak samo jak „test_mysum”, skonstruowaliśmy funkcję test_mydiff, aby przetestować wyrażenie dla różnych operacji za pomocą metody „Cu_Assert”.

Następnie mamy kod biegacza Cunit w głównej metodzie. Tutaj utworzyliśmy dwa apartamenty, „psuite1” i „psuite2”, z metody „cu_psuite” i przypisaliśmy te apartamenty wartość zerową. Utworzyliśmy te apartamenty do wykonania testu cunit, który powinien zostać zarejestrowany w rejestrze testu. Przed dodaniem apartamentów do „test_registry” stworzyliśmy rejestr i zainicjowaliśmy go z warunkami „IF”. Użyliśmy metody „cu_initialze_registry ()” do tworzenia rejestru do testowania apartamentów.

Następnie dodaliśmy Psuite1 do rejestru testowego, wywołując metodę CUNIT „cu_add_suite”. Następnie dodaliśmy nasze testy „test_mysum” i „test_mydiff” do określonych apartamentów, wykorzystując metodę „cu_add_test ()”. Ostatecznie wyświetliśmy wyniki testu cunit, wywołując metodę „cu_basic_run_tests ()” i oczyszczyliśmy rejestr po pomyślnym wyświetleniu wyników. Błąd napotkany podczas wykonywania testów cunit zostanie wyrzucony przez funkcję „cu_get_error ()”.

Poprzedni plik testowy Cunit jest zapisywany jako MyTest.plik C. Wykonaliśmy ten plik C za pomocą polecenia GCC. Użyliśmy flagi -LCunit do wykonywania pliku testowego CUNIT. Za pomocą tego polecenia nasz kod jest skompilowany. Następnie wykonaliśmy plik MyTest i pokazał oczekiwane wyniki testu CUNIT, ponieważ wszystkie testy zostały przekazane bez żadnej awarii.

Przykład 2

Mamy kolejny przykład, w którym przetestowaliśmy dwie metody obsługi plików, „Fread” i „Fprintf”, według podejścia Cunit. Otworzyliśmy i zamknęliśmy plik tymczasowy za pomocą funkcji testowych Cunit. Operacje testowe Cunit testują funkcje biblioteki, pisząc i czytając z pliku tymczasowego.

#włączać
#włączać
#włączać
#włączać
#include "cunit/podstawa.H"
plik statyczny* plik = null;
int init_suite1 (void)

if (null == (file = fopen ("myfile.txt "," w+")))
zwrot -1;

w przeciwnym razie
powrót 0;


int clean_suite1 (void)

if (0 != fclose (plik))
zwrot -1;

w przeciwnym razie
file = null;
powrót 0;


void test_fprintf (void)

int x1 = 10;
if (null != plik)
Cu_assert (2 == fprintf (plik, „q \ n”));
Cu_assert (7 == fprintf (plik, "x1 = %d", x1));


void test_fread (void)

Bufor Char bez podpisu [20];
if (null != plik)
Rewind (plik);
Cu_assert (9 == Fread (bufor, sizeof (niepodpisany char), 20, plik));
Cu_assert (0 == strncmp (bufor, „q \ nx1 = 10”, 9));


int main ()

Cu_psuite psuite = null;
if (cue_success != Cu_initialize_registry ())
return cu_get_error ();
Psuite = cu_add_suite („Suite1”, init_suite1, clean_suite1);
if (null == psuite)
Cu_cleanup_registry ();
return cu_get_error ();

if ((null == cu_add_test (pSuite, „fprintf () test funkcyjny”, test_fprintf)) ||
(Null == cu_add_test (psuite, „fread () test funkcji”, test_fread))))

Cu_cleanup_registry ();
return cu_get_error ();

Cu_basic_set_mode (cu_brm_verbose);
Cu_basic_run_tests ();
Cu_cleanup_registry ();
return cu_get_error ();





W pliku nagłówka zdefiniowaliśmy standardową bibliotekę cunit „cunit.H/podstawowe.H". Następnie zadeklarowaliśmy „plik” jako wskaźnik do pliku używanego przez testy. Następnie skonstruowaliśmy funkcję „init_suite1”, która otwiera plik tymczasowy „myfile.txt ”i zwraca wartość zero sukcesu; W przeciwnym razie wartość niezerowa zostanie zwrócona. Aby zamknąć plik, utworzyliśmy funkcję czyszczenia Suite, która zwraca również niezerową wartość niepowodzenia podczas zamykania pliku tymczasowego. W przeciwnym razie po pomyślnym zamknięciu pliku tymczasowego uzyskuje się wartość zerową. Następnie po prostu zaimplementowaliśmy funkcję „test_fprintf”, w której włożyliśmy dane do pliku tymczasowego „myfile.tekst". Te funkcje testowe zweryfikowały również liczbę bajtów, które próbowaliśmy napisać w pliku.

Następnie utworzyliśmy inną funkcję dla funkcji „test_fread”, aby przetestować metodę migoczącą. Tutaj sprawdziliśmy, czy określone znaki są obecne w wcześniej napisanych danych przez funkcję „test_fprinf ()”. Następnie mamy główną funkcję, w której skonfigurowane i wykonane testy są obsługiwane. Zdefiniowaliśmy „Psuit” w funkcji głównej i zainicjowaliśmy rejestr za pomocą funkcji testowej „Cu_Initialize_Resgistry”. Nazwaliśmy również funkcję „cu_add_suite”, aby dodać pakiet do rejestru i dodali określone testy do apartamentów za pomocą funkcji „cu_add_test”.

Podstawowe interfejsy testowe Cunit są używane na końcu do wyświetlania wyników kodu. Należy zauważyć, że główna funkcja zwraca „CUE_SUCCSCES” po pomyślnym wykonaniu i inny kod „cunit_error” po nieudanym wykonaniu.

Uruchomiliśmy poprzedni kod testu CUNIT, który wyświetlał podsumowanie programu i komunikat o metodach udanych testów.

Wniosek

Cunit to podstawowa struktura, która zapewnia różne interfejsy użytkowników. Pozwala nam zarządzać apartamentami testowymi, przypadkami testowymi i rejestrami testowymi. Testowanie programów i zobaczenie wyników tych testów jest łatwiejsze dzięki interfejsom użytkownika. Za pomocą tego artykułu omówiliśmy framework testowy CUNIT w C. Wykazaliśmy instalację, a następnie wdrożyliśmy dwa uruchomione programy w języku C. Poprzednie testowane programy dały udane wyniki.