¿Por qué mi prueba de unidad C ++ / CX no falla?
Tengo los siguientes métodos de prueba "Windows Store / Metro Style" en VS 2012 C ++ / CX
Éste tiene éxito, lo cual está bien.
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);
}
Éste falla, lo que también está bien:
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);
}
Pero por alguna razón, esta prueba no falla:
TEST_METHOD(FailedTest)
{
concurrency::event finished;
finished.reset();
auto testTask = concurrency::create_task( [&finished]()
{
Assert::IsTrue(false);
finished.set();
});
finished.wait(100000);
}
¿Estoy haciendo algo mal?
Como nota al margen, una posible solución alternativa sería poner todos los resultados de mis pruebas en variables y "probarlas" todas después definished.wait(100000);
, pero todavía me gustaría saber si hay algo realmente mal con lo que estoy haciendo.