Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 使用ctest/cmake测试非零退出状态_Unit Testing_Cmake_Ctest - Fatal编程技术网

Unit testing 使用ctest/cmake测试非零退出状态

Unit testing 使用ctest/cmake测试非零退出状态,unit-testing,cmake,ctest,Unit Testing,Cmake,Ctest,感兴趣的应用程序是一个编译器,它在源代码中遇到错误时返回非零退出代码。编译器的单元测试由有意触发错误的小片段组成 用于添加测试的功能是: function(add_compiler_test test_name options) add_test(NAME ${test_name} COMMAND $<TARGET_FILE:pawncc> ${DEFAULT_COMPILER_OPTIONS} ${options}) set_tests_properties(${t

感兴趣的应用程序是一个编译器,它在源代码中遇到错误时返回非零退出代码。编译器的单元测试由有意触发错误的小片段组成

用于添加测试的功能是:

function(add_compiler_test test_name options)
  add_test(NAME ${test_name}
    COMMAND $<TARGET_FILE:pawncc> ${DEFAULT_COMPILER_OPTIONS} ${options})
  set_tests_properties(${test_name} PROPERTIES
    ENVIRONMENT PATH=$<TARGET_FILE_DIR:pawnc>)
endfunction()
函数(添加编译器测试名称选项)
添加测试(名称${test\u NAME}
命令$${DEFAULT\u COMPILER\u OPTIONS}${OPTIONS})
设置测试属性(${test\u name}属性
环境路径=$)
endfunction()
当程序返回非零退出代码时,这会导致测试失败,尽管这是正确的行为

如何测试程序的退出状态?

如果要在测试返回非零退出状态时将其报告为成功,否则将失败,请为测试设置属性:

set\u tests\u属性(…属性将\u FAIL TRUE)

如何区分程序崩溃和程序故意返回非零退出代码?我需要检查退出状态。在任何情况下,崩溃都将被报告为失败。另请参见和我的答案。正则表达式测试(使用
PASS\u regular\u expression
)虽然由于将
WILL\u FAIL
设置为
TRUE
而实际失败,但仍然成功。我如何着手解决这个问题?我需要强制输出检查,但允许非零退出代码。这里也是。寻找检查特定非零返回值和特定输出的方法@Yashas,你找到解决办法了吗?我还在测试一个编译器,顺便说一句:D@sebkraemer:对于可执行结果(在您的例子中是编译器结果)的复杂解释,您可以围绕调用该可执行文件创建一个包装器。有关问题,请参见。
set_tests_properties(<test1> <test2> ... PROPERTIES WILL_FAIL TRUE)