为什么我的几个测试用例在“全部运行”控制器之后失败并单独通过?

时间:2019-07-03 07:53:47

标签: unit-testing mocking xunit

当我执行所有控制器的模拟测试用例时,一些测试用例会失败,但它们会分别通过。

我使用Dispose()时,我在使用与单元测试相同的变量,但仍然无法解决问题。

在我的项目中,我做了一个常见的设置示例:AbcMock

public class AbcMock
   {
       public static Mock<IAbcMock> abcMock;

       public static void Setup()
       {
           abcMock = new Mock<IAbcMock>();
           abcMock.Setup(x => x.GetAll(It.IsAny<Guid>())).Returns(1);
       }
   }

然后我对另一个文件中的所有服务进行了通用设置 假设baseController.cs具有以下设置

 public Mock<IAbcMock> abcMock ;
 abcMock = AbcMock.abcMock;
 AbcMock.Setup();

我的actul测试控制器

public class AbcMockTestController : baseController
    {
       AbcService abcService ;
       public ClaimExpertRolesMockTestController()
        {
           abcService = new AbcService (foo.Object, boo.Object);
        }

       [Fact]
        public void GetAll_Passing_Valid_Data()
        {
            abcMock.Setup(x => x.GetAll(It.IsAny<Guid>())).Returns(2);
            var result = abcService.GetAll(Guid.NewGuid());
            Assert.Equal(ProcessStatusEnum.Success, result.Status);
        }

       [Fact]
        public void GetAll_Passing_Valid_Data()
        {
            abcMock.Setup(x => x.GetAll(It.IsAny<Guid>())).Returns(3);
            var result = abcService.GetAll(Guid.NewGuid());
            Assert.Equal(ProcessStatusEnum.Success, result.Status);
        }
}

这是我的PROD代码设置。在阅读了很多文章之后,我知道使我的模拟对象成为静态对象使mi问题成为现实,因为我的测试用例已经通过了直观检查,但是在全部运行之后却失败了。那么,有什么建议可以在不改变代码的情况下解决我的问题?

0 个答案:

没有答案