问题标签 [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.

0 投票
2 回答
1779 浏览

c++ - CMake 和 CTest:自动运行测试的依赖项

在我的 CMakeLists.txt 我有这样的东西:

我想要某种方式来testX自动运行它的所有依赖项。就像是:

结果,CTest 将运行textY,testZtestX. 有没有办法做到这一点?

或者,如果现在不可能,有没有办法通过脚本从 CMake 构建目录中提取有关依赖项的信息?

0 投票
1 回答
402 浏览

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.

0 投票
1 回答
188 浏览

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功能。

0 投票
0 回答
324 浏览

c++ - CMake中的单元测试项目具有依赖关系,没有传递依赖关系?

我正在做一个大项目,我们在单元测试中正确使用模拟时遇到了麻烦。主要问题是我们没有正确设置所有依赖项,但在解决这个问题时,我们发现由于传递依赖项,单元测试项目获得了指向实现的链接,而不是它们的模拟。

我认为这可以通过使其依赖于它的被测单元而不依赖于它来解决,然后是模拟,然后是你想要添加的任何明确的东西,但我不知道如何只依赖在被测单元而不是它加上依赖项。

我怎样才能解决这个问题?

例如,cmakefile 是这样的:

并且 TestForUnit 首先针对 Sockets 进行解析(因为它是一个依赖项),然后在 MockSockets 上引起冲突,因为它具有与 Sockets 相同的符号集。我真的不想在任何地方删除所有依赖项,因为被测单元可以(并且在许多情况下)依赖于许多其他组件,然后您必须在任何地方重新指定,更不用说您无法访问包含该组件的路径。

0 投票
2 回答
1573 浏览

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!

0 投票
1 回答
260 浏览

unit-testing - 将 ARGN 传递给 CMake 的 add_test() 中的自定义脚本

我想将 ARGN 传递给run_test.cmake单元测试中的自定义。我在 CMake 脚本中所做的是:

在哪里

问题是 (1) 在配置消息打印期间获取所有参数,ARGN: ARG1;ARG2;ARG3而 (2) 在运行时消息打印期间仅获取第一个参数TEST_ARGN: ARG1

这绝对是我对 Cmake 缺乏了解,但我很想知道我做错了什么。

0 投票
1 回答
1987 浏览

cmake - 如何添加 CMake 自定义目标来测试所有子项目?

我有一个存储库,里面有几个项目。生成的目录结构是这样的:

在项目 A 和 BI 中,我使用add_test. 在一个项目中我可以做到make test

如何将目标“测试”添加到顶部 CMakeLists.txt 以便能够make test从顶级目录调用并执行所有项目的测试?

0 投票
1 回答
1071 浏览

cmake - How to write a functional test script to run under cmake/ctest

Under cmake, the following commands in a CMakeList.txt

#xA;

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?
0 投票
2 回答
2680 浏览

cmake - 如何告诉 cmake/ctest 下的测试在哪里可以找到其输入数据...而不更改硬编码文件名

目录prj/test包含一些测试脚本t01.exet02.exe。其中一些需要输入数据d01.dat等,也提供在prj/test. 这些数据文件的名称在测试中是硬编码的,我无法轻易更改。控制文件CMakeLists.txt包含

我正在子目录中构建项目prj/buildctest工作正常......直到测试需要输入数据。显然,没有找到它们,因为它们驻留在其中,prj/test而测试运行在prj/build/test.

因此我的问题是:

  • 让测试找到输入数据的标准方法是什么?
  • 有没有一种不需要复制数据的方法(如果它们很大)?
  • 确实,符号链接在 Windows 下不起作用,因此不是可接受的解决方案?
0 投票
1 回答
241 浏览

ctest - CTest 从 cmocka 源中提取测试名称

我正在使用 CTest 运行用 cmocka 编写的测试。我想知道是否可以让 CTest 从我的 cmocka 源中读取测试名称并在输出中将它们提供给我。例如,如果我的测试源包含 3 个测试:和test_order_correct,如果我将这些测试构建到一个名为的可执行文件中并使用 CTest 运行它,我得到的唯一输出是:test_order_receivedtest_customer_happytests

我倒要看看:

这是可能的,还是 CTest 不能像那样深入研究源代码?当我输入这个时,这个词似乎越来越不可能。