猿问

单元测试异步等待方法断言失败,如果(运行所有测试)被调用,但如果我一一运行测试通过

如果 (Run all test) 被调用,则单元测试异步等待方法断言失败,但如果我一一运行,则测试通过。


每种方法都没有相互依赖。


单元测试方法:


[TestMethod]

public async Task GetDataById()

{

    ////Act.

    var output = await Service.GetDataByID(1);

    ////Assert.

    Assert.IsNotNull(output);

    ////Act.

    output = await Service.GetDataByID(2);

    ////Assert.

    Assert.IsNull(output);

}


HUH函数
浏览 166回答 2
2回答

catspeake

如果您在每次测试之前有任何模拟设置,然后在每次测试之后重置这些模拟(TearDown)。避免在异步上下文中共享变量或状态``[TestMethod]public async Task GetDataById(){&nbsp; &nbsp; &nbsp;////Act.&nbsp; &nbsp; var output = await Service.GetDataByID(1);&nbsp; &nbsp; &nbsp;////Assert.&nbsp; &nbsp; Assert.IsNotNull(output);&nbsp; &nbsp; &nbsp;////Act.&nbsp; &nbsp; var output2 = await Service.GetDataByID(2); // <-- new variable&nbsp; &nbsp; ////Assert.&nbsp; &nbsp; Assert.IsNull(output2);}``只断言“一件事”多个断言是可以的,一个动作只有一个结果``[TestMethod]public async Task GetDataByIdWhenExists(){&nbsp; &nbsp; &nbsp;//Act.&nbsp; &nbsp; var output = await Service.GetDataByID(1);&nbsp; &nbsp; &nbsp;////Assert.&nbsp; &nbsp; Assert.IsNotNull(output);}[TestMethod]public async Task GetDataByIdWhenNotExists(){&nbsp; &nbsp; &nbsp;//Act.&nbsp; &nbsp; var output = await Service.GetDataByID(2);&nbsp; &nbsp; &nbsp;//Assert.&nbsp; &nbsp; Assert.IsNotNull(output);}``

弑天下

这是 Effort.DbConnectionFactory 的 CreatePersistent() 方法,我将其更改为 CreateTransient() 现在它正在工作。
随时随地看视频慕课网APP
我要回答