0

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

4

1 に答える 1

1

テストは失敗します。Tests Output ウィンドウを開くと ( View -> OutputShow output fromでTestsを選択)、次のように表示されます。

実行プロセスが予期せず終了したため、アクティブなテスト実行が中止されました。さらに調査するには、マシン レベルまたはプロセス vstest.executionengine.appcontainer.x86.exe のローカル クラッシュ ダンプを有効にします。詳細については、http : //go.microsoft.com/fwlink/?linkid=232477を参照してください。

テスト エクスプローラーでは、テストの実行に失敗したため、テストはグレー表示されます。残念ながら、テストの実行は完全に失敗するため、過去にテストに合格したことがある場合、そのテストは引き続き [成功したテスト]グループに表示され、横に緑色のチェック マークが表示されたままになります。テストが完全に実行されなかったことを示すものとして、グレー表示された名前を信頼してください。

このシナリオでは、テスト エクスプローラーの紛らわしい UI に関するMicrosoft Connectのバグを開くことをお勧めします (バグを開く場合は、この回答へのコメントとして、または質問にリンクを投稿して、他の人が見つけられるようにしてください)。

于 2012-09-25T18:23:38.077 に答える