CppUTest не работает - PullRequest
       7

CppUTest не работает

2 голосов
/ 09 апреля 2011

Я пытаюсь переписать какой-то унаследованный код C и хотел бы провести несколько тестов перед тем, как приступить к перезаписи.Для этого я взглянул на CppUTest и попробовал пример приложения, состоящего из заголовочного файла chrtostr.h, файла реализации chrtostr.c и тестового файла с именем test_chrtostr.c, содержимое которого указано ниже:

#include <CppUTest/CommandLineTestRunner.h>

#include "chrtostr.h"

TEST_GROUP(chrtostr)
{
}

TEST(chrtostr, test_chrtostr)
{
  CHECK_EQUAL(chrtostr('n'), "sfsdfds");
}

int main(int ac, char **av)
{
  return CommandLineTestRunner::RunAllTests(ac, av);
}

И соответствующий Makefile.am:

AUTOMAKE_OPTIONS = foreign

CPPUTEST_HOME = ./cpputest
CFLAGS = -g -Wall -I$(CPPUTEST_HOME)/include
LDFLAGS = -L$(CPPUTEST_HOME)/lib -lCppUTest

bin_PROGRAMS = chrtostr test_chrtostr
chrtostr_SOURCES = chrtostr.c chrtostr.h main.c
test_chrtostr_SOURCES = test_chrtostr.c

Проблема заключается в том, что каждый раз, когда я пытаюсь запустить make, я получаю следующую трассировку, которая на самом деле мне не особо помогает: http://pastebin.com/BK9ts3vk

Ответы [ 4 ]

6 голосов
/ 09 апреля 2011

Вероятно, вам следует начать с запуска одной из демонстраций. Вы могли видеть, как CppUTest предназначен для использования с C. Моя книга, «Разработка через тестирование для Embedded C», также поможет вам начать работу. В первых нескольких главах используется испытательный комплект C-Only. Более поздние примеры используют CppUTest (я один из авторов CppUTest). Я также опишу преимущества C ++ Test Harness для C.

Джеймс

p.s. - для получения дополнительной информации о CppUTest, смотрите CppUTest.org

2 голосов
/ 09 апреля 2011

Этот тестовый драйвер написан на C ++. Вам нужно будет скомпилировать это как C ++, поэтому переименуйте ваш файл в .cpp и убедитесь, что g++ вызывается для запуска компиляции / ссылки (вместо gcc).

1 голос
/ 26 мая 2011

К сожалению, пример «HelloWorld» в CppUTest недокументирован, и хотя в Приложении «Разработка через тестирование для Embedded C» перечислены только 11 проверок условий, я обнаружил, что существует намного больше недокументированных вспомогательных функций (все в значительной степени недокументированных ). Я бы не рекомендовал CppuTest, если вы не пытаетесь понять концепцию TDD.

Я бы искал больше коммерческого продукта, или ты собираешься приобрести много вредных привычек TDD, или будешь очень расстроен и просто продолжишь.

0 голосов
/ 23 июля 2011

Я просто смотрю на это снова. Было несколько проблем с вашим кодом. Ошибки C ++ не всегда помогают их устранить.

Я добавил комментарий перед тем, как исправил.

#include "CppUTest/TestHarness.h"

//The test file is c++. YOu have to tell it when you are linking to C code
extern "C"
{
#include "chrtostr.h"
}

//A test group needs to have a ';' after it. Under the hood, this macro 
//create a base class for the test cases of the same name
TEST_GROUP(Chrtostr)
{
};

//CHECK_EQUAL uses ==. STRCMP_EQUAL actually compares c-strings
TEST(Chrtostr, wrong)
{
  STRCMP_EQUAL(chrtostr('n'), "sfsdfds");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...