Qualitätssicherung für Embedded-Linux-Projekte Unit-Tests mit Open-Source-Werkzeugen

Unit-Tests mit Open-Source-Werkzeugen

#include <stdio.h>
#include <string.h>
#include <unistd.h>

#include <glib.h>

#include <autounit/autounit.h>

#include „../src/hello.h“

#define TTY_DEVICE „/dev/ttyX1“

gint
test_functions_tty_open(autounit_test_t *t)
{

int fd;

fd = dev_open(TTY_DEVICE);
au_assert(t, fd >= 0, „dev_open didn’t return valid file decriptor“);

if (fd >= 0) {
dev_close(fd);
}

return TRUE;
}

[...]

static autounit_test_group_t tests[] = {
{„test_functions_tty_open“, test_functions_tty_open, TRUE, TRUE},{„test_functions_tty_open_badfile“, test_functions_tty_open_badfile, TRUE, TRUE},
{„test_functions_tty_close“, test_functions_tty_close, TRUE, TRUE},{„test_functions_tty_init“, test_functions_tty_init, TRUE, TRUE},{„test_functions_tty_ok“, test_functions_tty_ok, TRUE, TRUE},
{0, 0, FALSE, FALSE}
};

int main(int argc _U_, char* argv[] _U_) {
autounit_suite_t *test_suite;
gint result;

test_suite = au_new_suite(g_string_new(„Function Tests“), 0, 0);
au_add_test_group(test_suite, tests);
result = au_run_suite(test_suite);

au_delete_suite(test_suite);

return result;
}

Listing 3. Code für Funktions- Tests. Das Präfix _au verweist auf autounit. Die Bedingungen, die hier definiert sind, müssen alle erfüllt werden, ansonsten ist der Test nicht bestanden.