Почему мой модульный тест C ++ / CX не проходит?

У меня есть следующие методы тестирования «Магазин Windows / Metro Style» в 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);, но я все еще хотел бы знать, действительно ли что-то не так с тем, что я делаю.

0

Решение

Тест не пройден. Если вы откроете окно вывода тестов (Вид -> Вывод, затем под Показать вывод из, Выбрать тесты), вы должны увидеть следующее:

Активный тестовый запуск был прерван, поскольку процесс выполнения неожиданно завершился. Для дальнейшего исследования включите локальные аварийные дампы либо на уровне компьютера, либо для процесса vstest.executionengine.appcontainer.x86.exe. Перейти к более подробной информации: http://go.microsoft.com/fwlink/?linkid=232477

в Тестовый проводник, тест должен отображаться серым цветом, потому что тест не был выполнен до конца. К сожалению, из-за того, что тестовый прогон полностью завершился неудачей, если тест проходил в любое время в прошлом, тест по-прежнему отображается в Пройденные тесты группа и все еще имеет зеленую галочку рядом с ней. Положитесь на серое имя в качестве указания на то, что тест не был завершен до конца.

Я бы порекомендовал открыть ошибку на Microsoft Connect о сбивающем с толку пользовательском интерфейсе в тестовом проводнике в этом сценарии (если вы открываете ошибку, опубликуйте ссылку либо в качестве комментария к этому ответу, либо в своем вопросе, чтобы другие могли ее найти).

1

Другие решения

Других решений пока нет …