Microsoft C++单元测试框架Assert.Inconclusive等效方法及运行时跳过测试方案
Microsoft Cpp Unit Testing Framework 无结论测试实现方案
原生等效方法
Microsoft Cpp Unit Testing Framework 原生提供了和C# Assert.Inconclusive()完全对应的接口:Assert::Inconclusive()。调用该方法后测试用例会被标记为「无结论」状态,既不计入通过统计也不计入失败统计,完全符合需求。
使用示例如下:
using namespace Microsoft::VisualStudio::TestTools::UnitTesting; TEST_METHOD(SampleTest) { // 你的跳过判断条件 bool skipCondition = GetTestEnvStatus() != ENV_READY; if (skipCondition) { // 可直接调用无参版本 Assert::Inconclusive(); // 也可以传入自定义宽字符提示,方便后续排查 // Assert::Inconclusive(L"测试环境未就绪,跳过当前用例"); } // 正常测试逻辑 int res = Add(1,2); Assert::AreEqual(3, res); }
自行实现方案
如果有自定义封装需求,也可以自己实现等效逻辑,通过抛出框架内置的UnitTestException指定结果状态即可:
#include <CppUnitTest.h> using namespace Microsoft::VisualStudio::TestTools::UnitTesting; void CustomInconclusive(const wchar_t* msg = L"自定义无结论提示") { throw UnitTestException(msg, LineInfo(), UnitTestOutcome::Inconclusive); }
注意事项
- 不要直接使用
return跳过测试逻辑,框架会判定测试执行完整,将其标记为通过,无法区分主动跳过的场景 - 框架所有字符串入参都要求是宽字符类型,需要在字符串前加
L标识 - 无结论状态的测试会在测试资源管理器中用特殊图标展示,不会影响测试通过率统计
内容的提问来源于stack exchange,提问作者Anton Serov
相关产品推荐
相关产品推荐

