c++ - 为什么我的 C++/CX 单元测试没有失败?

标签 c++ unit-testing windows-runtime visual-studio-2012 c++-cx

我在 VS 2012 C++/CX 中有以下“Windows Store/Metro Style”测试方法

这个成功了,可以了

TEST_METHOD(TestMethod)
{
    bool passed = false;
    concurrency::event finished;
    finished.reset();                                   
    auto testTask = concurrency::create_task( [&finished, &passed]()
    {   
        passed = true;
        finished.set();
    }); 
    finished.wait(100000);
    Assert::IsTrue(passed);
}

这个失败了,这也是可以的:

TEST_METHOD(TestMethod)
{
    bool passed = true;
    concurrency::event finished;
    finished.reset();                                   
    auto testTask = concurrency::create_task( [&finished, &passed]()
    {   
        passed = false;
        finished.set();
    }); 
    finished.wait(100000);
    Assert::IsTrue(passed);
}

但出于某种原因,这个测试并没有失败:

TEST_METHOD(FailedTest)
{
    concurrency::event finished;
    finished.reset();                                   
    auto testTask = concurrency::create_task( [&finished]()
    {   
        Assert::IsTrue(false);
        finished.set();
    });
    finished.wait(100000);          
}

我做错了什么吗?

作为旁注,一个可能的解决方法是将我的所有测试结果放入变量中,并在 finished.wait(100000); 之后“测试”它们,但我仍然想知道我正在做的事情是否真的有问题。

最佳答案

测试确实失败了。如果您打开“测试输出”窗口(查看 -> 输出,然后在显示输出 下,选择测试),您应该会看到以下内容:

The active Test Run was aborted because the execution process exited unexpectedly. To investigate further, enable local crash dumps either at the machine level or for process vstest.executionengine.appcontainer.x86.exe. Go to more details: http://go.microsoft.com/fwlink/?linkid=232477

Test Explorer 中,测试应该显示为灰色,因为测试未能运行完成。不幸的是,由于测试运行完全失败,如果测试在过去的任何时间通过,该测试仍会出现在已通过测试 组中,并且旁边仍然有一个绿色复选标记。将灰显的名称作为测试未运行完成的指示。

我建议在 Microsoft Connect 上打开一个错误关于这种情况下测试资源管理器中令人困惑的 UI(如果您打开一个错误,请将链接发布为对此答案的评论或您的问题,以便其他人可以找到它)。

关于c++ - 为什么我的 C++/CX 单元测试没有失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12581714/

相关文章:

c++ - 为什么我需要在 main 里面写 std::ios::sync_with_stdio?

c++ - 如何调试无痕崩溃

c++ - 如何在共享内存中分配 CGAL Halfedge 结构?

unit-testing - 我应该从 JEST 跟踪 'snapshots' 吗?

c++ - 如何在 C++ 中生成给定数组的子集?

java - 无法使用@WebMvcTest Autowiring MockMvc

ios - Xcode 7 UI 测试失败 : App accessibility isn't loaded

c++ - 如何在 Windows 8 现代应用程序上从视频流中抓取帧?

c# - 构造函数中的 WinRT 异步数据加载

c# - FolderPicker 在 UWP Windows 10 应用程序(移动)中不起作用