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);
ことですが、それでも、私がやっていることに実際に何か問題があるかどうか知りたいです.