为什么我的C ++ / CX单元测试不会失败?(Why my C++/CX unit-test do

2019-07-31 21:45发布

我有以下的“Windows应用商店/ Metro风格”,在VS 2012的C ++ / CX试验方法

这一次成功了,这是确定

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); ,但我还是想知道如果有什么实际错误的我在做什么。

Answer 1:

这项测试并失败。 如果你打开测试输出窗口( 查看- >输出然后 ,选择测试 输出显示 ,下),你应该看到以下内容:

主动测试运行中断,因为执行过程中意外退出。 为了进一步研究,使当地崩溃转储或者机器级或过程vstest.executionengine.appcontainer.x86.exe。 转到更多细节: http://go.microsoft.com/fwlink/?linkid=232477

测试资源管理器 ,试验应显示为灰色,因为测试无法运行至完成。 不幸的是,由于试运行完全失效,如果试验曾在通过以往任何时候,测试仍然出现传递测试组中,仍然有旁边有一个绿色的对勾。 依靠变灰的名字表明该测试没有完成运行。

我建议打开一个错误Microsoft连接在这种情况下就在测试资源管理的混乱UI(如果你打开一个bug,请张贴链接无论是作为这个答案或在你的问题中留言,以便其他人可以找到它)。



文章来源: Why my C++/CX unit-test does not fail?