Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CppUTest not working

I am trying to rewrite some legacy C code and would like to have some tests in place before actually starting the rewrite. FOr this I took a look at CppUTest and tried a sample application consisting of a header file chrtostr.h, an implementation file chrtostr.c and a test file called test_chrtostr.c which contents is listed bellow:

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

And the corresponding 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

The issue is that each time I try to run make I get the following traceback which doesn't actually help me too much: http://pastebin.com/BK9ts3vk

like image 392
hyperboreean Avatar asked Mar 23 '26 07:03

hyperboreean


2 Answers

You should probably start by getting one of the demos going. You could see how CppUTest is intended to be used with C. My book, Test-Driven Development for Embedded C, will help you get started too. The first few chapters use a C-Only test harness. Later examples use CppUTest (I'm one of the authors of CppUTest). I also describe the advantages of a C++ test harness for C.

James

p.s. - for more information on CppUTest, look at CppUTest.org (click here for a current link).

like image 186
James Grenning Avatar answered Mar 24 '26 21:03

James Grenning


That test driver is written in C++. You'll need to compile that as C++, so rename your file to .cpp and make sure g++ is called to drive the compile/link (rather than gcc).

like image 42
Mat Avatar answered Mar 24 '26 19:03

Mat