首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从cmake创建makefile调用Unittest++

从cmake创建makefile调用Unittest++
EN

Stack Overflow用户
提问于 2014-01-09 02:13:28
回答 1查看 483关注 0票数 1

我最近开始学习cmake,遇到了一个小问题。我让我的可执行文件和单元测试都可以从生成的makefile编译,没有问题。如果我在build目录中运行./test,在UnitTest++中创建的测试将按预期运行并完成,并打印结果。有没有任何方法可以让make test简单地运行测试可执行文件,而不是在ctest框架内运行它,或者我应该用另一种方式来运行它呢?

下面是我的代码的一个最小的工作示例:

src/ main /main.c是一个简单的空主函数。

src/test/testMain.cpp:

代码语言:javascript
复制
#include <UnitTest++/UnitTest++.h>

TEST(FailSpect)
{
    CHECK(false);
}

int main()
{
    UnitTest::RunAllTests();
}

CMakeLists.txt:

代码语言:javascript
复制
cmake_minimum_required( VERSION 2.6 )
project( myProject)

enable_testing()

set( myProjectMain
    src/main/main.c
    )

set( myProjectSrc
    )

set( myProjectTestSrc
    src/test/testMain.cpp
    )

add_executable( myExecutable ${myProjectMain} ${myProjectSrc} )
add_executable( testSuite ${myProjectTestSrc} ${myProjectSrc} )

target_link_libraries( testSuite UnitTest++ )

add_test( testExe testSuite )

make test输出:

代码语言:javascript
复制
Running tests...
Start processing tests
Test project /myProjectDir/build
  1/  1 Testing testExe                       Passed

100% tests passed, 0 tests failed out of 1

./testSuite输出:

代码语言:javascript
复制
/myProjectDir/src/test/testMain.cpp:5: error: Failure in FailSpect: false
FAILURE: 1 out of 1 tests failed (1 failures).
Test time: 0.00 seconds.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-10 16:11:47

我已经想好了该怎么做。首先,移除线条:

代码语言:javascript
复制
enable_testing()

代码语言:javascript
复制
add_test(testExe testSuite)

并将其替换为:

代码语言:javascript
复制
add_custom_target(test ./testExe
    DEPENDS ./testExe)

在CMakeLists.txt文件的末尾。现在,make (all)同时构建测试和主程序。如果一切都已经构建好了,那么make test将只检查测试是否构建并运行它们,生成:

代码语言:javascript
复制
[100%] Built target testExe
/myProjectDir/src/test/testMain.cpp:5: error: Failure in FailSpect: false
FAILURE: 1 out of 1 tests failed (1 failures).
Test time: 0.00 seconds.
[100%] Built target test

如果测试已经过时(例如,在make clean之后),那么make test将生成:

代码语言:javascript
复制
[100%] Building CXX object CMakeFiles/testExe.dir/src/test/testMain.cpp.o
Linking CXX executable testExe
[100%] Built target testExe
/myProjectDir/src/test/testMain.cpp:5: error: Failure in FailSpect: false
FAILURE: 1 out of 1 tests failed (1 failures).
Test time: 0.00 seconds.
[100%] Built target test
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21010455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档