我正在尝试用googleTest构建一些测试,这些测试应该测试一些MPI并行代码。理想情况下,我希望我们的CI服务器通过ctest执行它们。
我天真的方法是简单地用MPI调用ctest
mpirun -n 3 ctest但是,只要至少执行两个测试,即使是微不足道的测试也会失败。
简单测试的示例:
TEST(TestSuite, DummyTest1) {
EXPECT_TRUE(true);
}
TEST(TestSuite, DummyTest2) {
EXPECT_TRUE(true);
}我应该以其他方式推出ctest吗?还是我必须以完全不同的方式对待这件事?
更多信息:
gtest_discover_tests()添加的。mpirun -n 3 testExe)启动测试可执行文件可以获得成功的测试,但我更喜欢使用ctest。发布于 2022-04-28 11:16:57
根据链接到合并请求和这 GitLab存储库中的问题的CMake论坛帖子,gtest_discover_tests()目前根本不支持MPI。
一个可能的解决方法是滥用CROSSCOMPILING_EMULATOR属性将包装器注入测试命令。然而,这改变了整个目标,而不仅仅是测试,因此您的里程可能会有所不同。
set_property(TARGET TheExe PROPERTY CROSSCOMPILING_EMULATOR '${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} 3')
gtest_discover_tests(TheExe)请参阅论坛帖子,以获得一个完整的最小示例。
https://stackoverflow.com/questions/71971858
复制相似问题