问题标签 [ctest]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - CMake 和 CTest:自动运行测试的依赖项
在我的 CMakeLists.txt 我有这样的东西:
我想要某种方式来testX
自动运行它的所有依赖项。就像是:
结果,CTest 将运行textY
,testZ
和testX
. 有没有办法做到这一点?
或者,如果现在不可能,有没有办法通过脚本从 CMake 构建目录中提取有关依赖项的信息?
c++ - Valgrind changes working directory with CTest in KDevelop
I am starting a test with Helgrind using Ctest:
However the working directory in the test seems to be /usr/bin. Even when specifying:
which should be the default I guess. It works if I use memcheck for example.
The test is started from KDevelop.
boost - Boost.Tests:指定函数名而不是 main
我正在使用 cmake 构建系统开发一个项目。默认情况下,CMake 有一个很好的框架,可以从一组 C/C++ 代码生成单个可执行文件。cmake 函数称为create_test_sourcelist。它的作用是生成一个带有单个主入口点的 C/C++ 调度程序,该入口点将调用其他 C/C++ 代码。
因此,我有一堆带有函数签名的 C/C++ 文件,例如:int TestFunctionality1(int argc, char *argv[])
,我想保持原样,除非它当然意味着更多的工作。
我怎样才能保持这个系统到位并开始使用BOOST_CHECK
?我不知道如何指定实际的主入口点不被调用int main(int argc, char *argv[])
。
我的目标是有一个与 Jenkins 集成的框架,因为该项目已经使用了 Boost,我相信这应该是可行的,而无需重新编写现有的 CMake 测试套件并将所有测试更改为独立的main
功能。
c++ - CMake中的单元测试项目具有依赖关系,没有传递依赖关系?
我正在做一个大项目,我们在单元测试中正确使用模拟时遇到了麻烦。主要问题是我们没有正确设置所有依赖项,但在解决这个问题时,我们发现由于传递依赖项,单元测试项目获得了指向实现的链接,而不是它们的模拟。
我认为这可以通过使其依赖于它的被测单元而不依赖于它来解决,然后是模拟,然后是你想要添加的任何明确的东西,但我不知道如何只依赖在被测单元而不是它加上依赖项。
我怎样才能解决这个问题?
例如,cmakefile 是这样的:
并且 TestForUnit 首先针对 Sockets 进行解析(因为它是一个依赖项),然后在 MockSockets 上引起冲突,因为它具有与 Sockets 相同的符号集。我真的不想在任何地方删除所有依赖项,因为被测单元可以(并且在许多情况下)依赖于许多其他组件,然后您必须在任何地方重新指定,更不用说您无法访问包含该组件的路径。
unit-testing - CMake and CTest's default "test" command skips a specially named test
I'm using CTest with CMake to run some tests. I use the enable_testing()
command which provides me with a default command for make test
. All of the tests in my subdirectory are accounted for (by doing an add_test
command) and make test
works great, except one problem.
There is a certain test, which I've named skip_test
, that I do NOT want being run when I do make test
. I would like to add a custom target so I can run make skip_test
and it will run that test.
I can do this by doing add_custom_target(skip_test ...)
and providing CTest with the -R
flag and telling it to look for files containing "skip_test" in their name. This also seems to work. My problem now is: how can I get the make test
command to ignore skip_test
?
If I try commenting out enable_testing
and adding my own add_custom_target(test ....)
, I get "No tests found!!!" now for either make test
or make skip_test
. I also tried making a Custom CTest file and adding set(CTEST_CUSTOM_TESTS_IGNORE skip_test)
. This worked so that now make test
ignored "skip_test", but now running make skip_test
responds with "no tests found!!!".
Any suggestions would be appreciated!
unit-testing - 将 ARGN 传递给 CMake 的 add_test() 中的自定义脚本
我想将 ARGN 传递给run_test.cmake
单元测试中的自定义。我在 CMake 脚本中所做的是:
在哪里
问题是 (1) 在配置消息打印期间获取所有参数,ARGN: ARG1;ARG2;ARG3
而 (2) 在运行时消息打印期间仅获取第一个参数TEST_ARGN: ARG1
。
这绝对是我对 Cmake 缺乏了解,但我很想知道我做错了什么。
cmake - 如何添加 CMake 自定义目标来测试所有子项目?
我有一个存储库,里面有几个项目。生成的目录结构是这样的:
在项目 A 和 BI 中,我使用add_test
. 在一个项目中我可以做到make test
。
如何将目标“测试”添加到顶部 CMakeLists.txt 以便能够make test
从顶级目录调用并执行所有项目的测试?
cmake - How to write a functional test script to run under cmake/ctest
Under cmake, the following commands in a CMakeList.txt
suffice to create a test that can be executed through the shell command ctest
.
Unfortunately, the cmake docs give not the least indication of what constitutes a valid test executable (<test_command>
). Usually, test executables are generated using a framework like google-test. It's a bit involved, but there are good examples in the web that show how to make tests under google-test under cmake.
Now I want to extend my use of cmake/ctest to functional test scripts that need not to be compiled, and therefore cannot be run under google-test. Thence my question: what constitutes a valid hand-written test executable to be directly activated through add_test
:
- Shall my test executable generate output? Shall it write to stdout or stderr?
- Shall my test executable return certain values to indicate success or failure?
- Or where in the cmake docs can I find the answer?
cmake - 如何告诉 cmake/ctest 下的测试在哪里可以找到其输入数据...而不更改硬编码文件名
目录prj/test
包含一些测试脚本t01.exe
等t02.exe
。其中一些需要输入数据d01.dat
等,也提供在prj/test
. 这些数据文件的名称在测试中是硬编码的,我无法轻易更改。控制文件CMakeLists.txt
包含
我正在子目录中构建项目prj/build
。ctest
工作正常......直到测试需要输入数据。显然,没有找到它们,因为它们驻留在其中,prj/test
而测试运行在prj/build/test
.
因此我的问题是:
- 让测试找到输入数据的标准方法是什么?
- 有没有一种不需要复制数据的方法(如果它们很大)?
- 确实,符号链接在 Windows 下不起作用,因此不是可接受的解决方案?
ctest - CTest 从 cmocka 源中提取测试名称
我正在使用 CTest 运行用 cmocka 编写的测试。我想知道是否可以让 CTest 从我的 cmocka 源中读取测试名称并在输出中将它们提供给我。例如,如果我的测试源包含 3 个测试:和test_order_correct
,如果我将这些测试构建到一个名为的可执行文件中并使用 CTest 运行它,我得到的唯一输出是:test_order_received
test_customer_happy
tests
我倒要看看:
这是可能的,还是 CTest 不能像那样深入研究源代码?当我输入这个时,这个词似乎越来越不可能。