¿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.

Respuestas a la pregunta(1)

Su respuesta a la pregunta