簡體   English   中英

單元測試異步方法在方法完成之前測試斷言

[英]unit testing an async method tests assertions before method has completed

[TestMethod]
public void TestMethod1()
{
    TestClass testClass = new TestClass();
    testClass.Method();
    Assert.AreEqual(testClass.x, true);
}

和測試類:

public async void Method()
{
    if(cond)
        await InnerMethod();
}

private async Task InnerMethod()
{
    var data = await client.FetchData();
    x = data.res;
}

我正在測試這種格式的同步方法。 但是當我運行測試時,它通過var data = await client.FetchData();行運行。

然后而不是繼續執行該方法,而是先進入測試方法中的assert語句(失敗,因為顯然它沒有完成該方法)。 然后,繼續進行其余的方法。

我真的很困惑為什么要這樣做,但是我猜它與線程有關。 為什么這種行為真正有用的任何線索! 謝謝

使您的測試方法與public async Task TestMethod1()異步,並在測試內部await testClass.Method(); 我不確定MSTest,但可以與xUnit一起使用。

同樣,如下面的注釋中所述,您應該使用public async Task Method1() 閱讀Async / Await-異步編程最佳實踐

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM