在我经历的项目中,make check
是用来做unit test
的。那么如何在一个新建的autotools
项目中支持make check
呢?下面举一个最简单的例子。
先看目录结构:
$ tree
.
├── autogen.sh
├── configure.ac
├── Makefile.am
├── src
│ └── add.cpp
└── tst
├── add_test.cpp
└── Makefile.am
看一下每个文件的内容:
$ cat autogen.sh
#!/bin/sh
autoreconf -i
$ cat configure.ac
AC_PREREQ([2.69])
AC_INIT(example-minimal-check, 1.0)
AC_CONFIG_HEADERS([config.h])
AC_PROG_CXX
AM_INIT_AUTOMAKE
AM_PROG_AS
AC_OUTPUT(Makefile tst/Makefile)
$ cat Makefile.am
AUTOMAKE_OPTIONS = foreign
SUBDIRS = tst
$ cat src/add.cpp
int add(int a, int b)
{
return a + b;
}
$ cat tst/add_test.cpp
#include <gtest/gtest.h>
int add(int,int);
TEST(SimpleTest, add_ok)
{
EXPECT_EQ(3, add(1,2));
EXPECT_EQ(300, add(100,200));
}
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
$ cat tst/Makefile.am
AUTOMAKE_OPTIONS = subdir-objects
check_PROGRAMS = test1
test1_SOURCES = add_test.cpp $(top_srcdir)/src/add.cpp
test1_LDFLAGS = -lgtest
TESTS = test1
开始运行单元测试:
$ ./autogen.sh
$ ./configure
$ make check
image.png
网友评论