wtorek, 1 stycznia 2019

[0] Google Test - Przygotowanie środowiska testowego

Ten post chciałbym poświęcić na przygotowanie środowiska testowego w Visual Studio Google Test dla kodu na mikrokontroler STM32 wykonywanego za pomocą programu System Workbench.


Program


W tym przypadku tworzymy projekt testowy bezpośrednio w Visual Studio.

Części kodów, które są potrzebne będą dodawane z osobnej lokalizacji zawierającej projekt układu. Biblioteki zewnętrzne można dodawać na dwa sposoby. Sposób pierwszy polega na podaniu pełnej ścieżki do pliku np:

  1. extern "C" {
  2.     #include "C:\Users\Folder1\STMProject\src\testfile.c"
  3. }

Drugi sposób polega na dodaniu ścieżki do pliku w właściwościach projektu.


Po zdefiniowaniu ścieżki wystarczy dodać pozostałe elementy danych do pliku:

  1. extern "C" {
  2.     #include "testfile.c"
  3. }

Opcja ze zdefiniowaną ścieżką jest znacznie lepsza, ponieważ w przypadku nie dodania jej w definicjach include mogą pojawić się błędy wynikające z niemożliwości znalezienia pliku, które są dodane wewnątrz testowanego pliku.

Teraz aby odłączyć elementy niezdefiniowane można korzystać z instrukcji define i odłączać niepotrzebne części kodu. Można też dołączać potrzebne biblioteki, co może zająć sporo czasu i może nie przynieść oczekiwanych rezultatów.

Użycie procedury define może wyglądać następująco:

  1. #ifndef UNIT_TEST
  2. ... części kodu nie kompilowane w testach
  3. #endif

Odłączane elementy będą najczęściej dotyczyć ustawień portów, konfiguracji sprzętowej, przesyłania danych itp.

Po tych ustawieniach procedury testowe wykonuje się bezpośrednio w programie Visual Studio.

Jako przykład wezmę funkcję wykonującą dodawanie, która została zdefiniowana w pliku w projekcie głównym:

  1. uint8_t addData(uint8_t data1, uint8_t data2)
  2. {
  3.     return (data1 + data2);
  4. }

Wykonanie operacji testowania za pomocą Google Test wygląda następująco:

  1. TEST(AddDataFuncTest, AddData_Function) {
  2.     uint8_t value = addData(2, 2);
  3.     EXPECT_EQ(value, 4);
  4. }