Dlaczego mój test jednostkowy C ++ / CX nie zawodzi?
Mam następujące metody testowania „Windows Store / Metro Style” w VS 2012 C ++ / CX
Ten się powiedzie, co jest w porządku
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);
}
Ten się nie udaje, co jest również w porządku:
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);
}
Ale z jakiegoś powodu test ten nie zawodzi:
TEST_METHOD(FailedTest)
{
concurrency::event finished;
finished.reset();
auto testTask = concurrency::create_task( [&finished]()
{
Assert::IsTrue(false);
finished.set();
});
finished.wait(100000);
}
czy robię coś źle?
Na marginesie, możliwym obejściem może być umieszczenie wszystkich wyników moich testów w zmiennych i „przetestowanie” ich wszystkichfinished.wait(100000);
, ale nadal chciałbym wiedzieć, czy coś jest nie tak z tym, co robię.