2

タイトルで述べたように、対応するテスト メソッドでAsserts: 02 つの が呼び出されているにもかかわらず、NUnit Android テスト ランナーに表示されるのはなぜですか? Assert私がアサーションを間違った方法で行っていたのか、それとも表示された情報が私が考えていることとはまったく異なることを意味しているのか、ちょっと興味があります.

ここに画像の説明を入力

試験方法は下記の通りです。2 つの行のブレークポイントはAssert期待どおりにヒットします。

[Test]
public async Task TestDeleteHistoryShouldEmptyTable()
{
    var newBookmark = new Bookmark
    {
        Id = "foo",
        Page = 100,
        CreatedBy = "john doe",
        CreatedDate = DateTime.Now
    };
    await _mainVM.Repo.SaveAsync(newBookmark);
    var historyBefore = await _mainVM.Repo.GetLatestBookmarksAsync(Helpers.HistorySize);
    Assert.True(historyBefore.Any());

    await _mainVM.Repo.ClearTable("Bookmark");
    var historyAfter = await _mainVM.Repo.GetLatestBookmarksAsync(Helpers.HistorySize);
    Assert.True(!historyAfter.Any());
}

アップデート :

この問題は、次のテスト方法を使用して再現することもできます。

[Test]
public async Task TestAsyncCounter()
{
    await FakeAsyncMethod();
    Assert.True(true);
}

public async Task FakeAsyncMethod()
{
    await Task.Delay(1000);
}
4

1 に答える 1

2

問題トラッカーの NUnit メンテナーの 1 人である@CharliePooleによって確認されたように、これはフレームワークのバグであることが判明しました。

「OK、最後のコメントを取り戻さなければなりません。awaited メソッドに await 自体が含まれていないため、同期的に処理される場合、正しく機能します。awaited メソッドに含めるawait Task.Delay(1)と、奇妙な結果が表示されます。したがって、間違いなくフレームワークのバグであり、.NET 4.5 でも見られます。」

今のところ、Issue Tracker の更新を待ちましょう。


更新された課題追跡リンク: https://github.com/nunit/nunit/issues/1499

于 2016-05-17T03:55:47.000 に答える