为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
HUH函数 2021-06-17 14:33:58
如果 (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);}
查看完整描述

2 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

如果您在每次测试之前有任何模拟设置,然后在每次测试之后重置这些模拟(TearDown)。


避免在异步上下文中共享变量或状态

``


[TestMethod]

public async Task GetDataById()

{

     ////Act.

    var output = await Service.GetDataByID(1);

     ////Assert.

    Assert.IsNotNull(output);

     ////Act.

    var output2 = await Service.GetDataByID(2); // <-- new variable

    ////Assert.

    Assert.IsNull(output2);

}

``


只断言“一件事”多个断言是可以的,一个动作只有一个结果

``


[TestMethod]

public async Task GetDataByIdWhenExists()

{

     //Act.

    var output = await Service.GetDataByID(1);

     ////Assert.

    Assert.IsNotNull(output);

}


[TestMethod]

public async Task GetDataByIdWhenNotExists()

{

     //Act.

    var output = await Service.GetDataByID(2);

     //Assert.

    Assert.IsNotNull(output);

}

``


查看完整回答
反对 回复 2021-06-26
?
弑天下

TA贡献1818条经验 获得超7个赞

这是 Effort.DbConnectionFactory 的 CreatePersistent() 方法,我将其更改为 CreateTransient() 现在它正在工作。



查看完整回答
反对 回复 2021-06-26
  • 2 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信