我想将ctest集成到c ++ / c项目中。我使用谷歌测试来编写单元测试。
我的CMakeLists.txt的相关部分如下所示:
<User version="5.1.0.1" ... (omitted for brevity) >
<Login usewinLogin="true" passwordNeverExpires="false" />
<Misc />
<AdditionalInfo />
<OutOfOfficeSettings isOutOfOffice="false" startDateTime="0001-01-01T00:00:00.0000000Z" />
<RegionalSettings language="de" culture="de" />
</User>`
如您所见,我指定了可执行文件的输出目录(UNIT_TEST_BIN_OUTPUT_DIR)。
当我使用终端时,可执行文件可以正常工作:
...
####### CREATING EXE #######
add_executable(test_exe main.cpp test.cpp)
target_link_libraries(test_exe GTest::GTest GTest::Main)
set_target_properties (test_exe PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${UNIT_TEST_BIN_OUTPUT_DIR})
add_test(test_exe test_exe)
我想用ctest来执行我的测试。所以我去了cmake生成的“ctest文件夹”。在这里,我想使用ctest来执行cmake中“add_test”添加的所有测试。
cd <UNIT_TEST_BIN_OUTPUT_DIR>
./test_exe
如果我将“test_exe”放在其中一个显示的路径中,它可以正常工作。但我不希望他们在那里。
我的问题:
有没有办法告诉ctest它应该在user@user:~/<dir to cmake>/cmake/unit_tests$ ctest
Test project /<dir to cmake>/cmake/unit_tests
Start 1: test_exe
Could not find executable test_exe
Looked in the following places:
test_exe
test_exe
Release/test_exe
Release/test_exe
Debug/test_exe
Debug/test_exe
MinSizeRel/test_exe
MinSizeRel/test_exe
RelWithDebInfo/test_exe
RelWithDebInfo/test_exe
Deployment/test_exe
Deployment/test_exe
Development/test_exe
Development/test_exe
Unable to find executable: test_exe
1/1 Test #1: test_exe ......***Not Run 0.00 sec
0% tests passed, 1 tests failed out of 1
Total Test time (real) = 0.00 sec
The following tests FAILED:
1 - test_exe (Not Run)
Errors while running CTest
查找才能找到可执行文件?
答案 0 :(得分:7)
使用 CMake 3.20 及更高版本,您可以使用 CLI option 告诉 CTest 哪个目录包含您的测试:
ctest --test-dir /path/to/your/tests
这是针对现有测试的侵入性较小的解决方案,您不想修改 CMake 文件。
答案 1 :(得分:5)
m2 <- metaprop(4:1, c(10, 20, 30, 40), sm="PFT")
summary(m2)
###################
Number of studies combined: k = 4
proportion 95%-CI z p-value
Fixed effect model 0.0775 [0.0272; 0.1449] -- --
Random effects model 0.1093 [0.0138; 0.2589] -- --
Quantifying heterogeneity:
tau^2 = 0.0229; H = 1.78 [1.05; 3.04]; I^2 = 68.6% [9.1%; 89.2%]
Test of heterogeneity:
Q d.f. p-value
9.56 3 0.0227
Details on meta-analytical method:
- Inverse variance method
- DerSimonian-Laird estimator for tau^2
- Freeman-Tukey double arcsine transformation
- Clopper-Pearson confidence interval for individual studies
###################
的{{3}}为该命令的长格式指定 WORKING_DIRECTORY 选项。此选项的值用作测试运行的目录:
random.est2 <- c(m2$TE.random,m2$lower.random,m2$upper.random)
unlist(lapply(random.est2, meta:::backtransf, sm="PFT", n=1/mean(1/m2$n)))
########
[1] 0.10932841 0.01376599 0.25889792
unlist(lapply(random.est2, meta:::asin2p, n=1/mean(1/m2$n)))
##########
[1] 0.10932841 0.01376599 0.25889792
如果您只是想让测试找到可执行文件,那么使用
就足够了add_test
这是add_test(NAME test_exe COMMAND test_exe WORKING_DIRECTORY ${UNIT_TEST_BIN_OUTPUT_DIR})
命令的长格式。在这种形式中,CMake检查COMMAND是否是目标名称,如果是,则将其替换为与该目标对应的可执行文件的绝对路径。这样可以从任何目录运行测试。
请注意,自动替换目标不适用于您使用的add_test(NAME test_exe COMMAND test_exe)
简短格式。
答案 2 :(得分:0)
在我们的项目中,我们总是在调用add_test()时指定路径,例如:
add_test( ${filename} ${CMAKE_CURRENT_BINARY_DIR}/${filename} )