googletest退出一个测试用例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了googletest退出一个测试用例相关的知识,希望对你有一定的参考价值。

googletest退出一个测试用例:googletest提供了三组宏分别用于测试导致进程崩溃、导致进程退出、抛异常的函数,他们分别是EXPECT_DEATH、EXPECT_EXIT、EXPECT_THROW及其各自的ASSERT版本。使用这些宏测试相应的函数不会干扰单元测试的工作流,换言之,函数断言并不会导致单元测试进程异常退出。而如果使用一般的宏,例如EXPECT_EQ,来验证传入异常值时函数是否会断言时,单元测试进程也会异常退出,无法执行后续的测试用例。 参考技术A GoogleTest退出一个测试用例的操作方法是:在测试用例中捕获信号,如SIGSEGV或SIGABRT,然后将其转换为ASSERT_TRUE或ASSERT_FALSE,基于测试用例的结果返回。在某些情况下,也可以使用GoogleTest中的HP_ASSERT_EXIT等方法来实现退出测试用例的功能。

vstest 未获取 googletest 可执行文件中的单元测试

【中文标题】vstest 未获取 googletest 可执行文件中的单元测试【英文标题】:unit tests in googletest executable not picked up by vstest 【发布时间】:2018-07-19 14:28:57 【问题描述】:

我有一个(本机 C++)可执行文件 (test_descriptions.exe),其中包含一些 googletests (1.7)。只需运行可执行文件就可以正常工作,并且可以很好地通过测试。现在我想在 TFS 中使用 vstest 自动运行这些测试。

不幸的是,在我的可执行文件上应用 vstest 会出现以下错误:

C:\project>"C:\Program Files BLABLA \vstest.console.exe" test_descriptions.exe /platform:x64

Warning: Using Isolation mode to run tests as required by effective Platform:X64 and .Net Framework:Framework45 settings for test run. Use the /inIsolation parameter to suppress this warning.
Warning: No test is available in test_descriptions.exe. Make sure that installed test discoverers & executors, platform & framework version settings are appropriate and try again.

有什么想法吗?是否有更好的方法在 TFS 中运行这些测试(我考虑过只构建 RUN_TESTS 项目并让 cmake 的 ctest 完成工作)

编辑:我也尝试添加/UseVsixEntensions:true,结果相同。

【问题讨论】:

【参考方案1】:

原来对 Google 测试适配器的引用丢失了。 /UseVxisEntensions:true 已弃用,现在应该使用 \TestAdapterPath: 设置 Google 测试适配器的 DLL 的位置

【讨论】:

以上是关于googletest退出一个测试用例的主要内容,如果未能解决你的问题,请参考以下文章

捕获测试用例的系统日志

[QtCratot]_0_0_googletest单元测试

[QtCratot]_0_0_googletest单元测试

测试无法运行测试用例退出 TypeError: Jest: a transform must export a `process` function

自动化测试用例编写的规范

微信聊天功能测试用例