c# - TypeMock 隔离器 : WillThrow() bleeds across unit test boundaries?

标签 c# unit-testing isolation typemock typemock-isolator

我有两个使用 TypeMock Isolator 的单元测试从 asp.net 的 SqlMembershipProvider 中隔离和伪造一个方法。

在测试 1 中我有:

        Isolate.WhenCalled(
            () =>
                Membership.CreateUser(...)))
            .WithExactArguments()
            .WillThrow(new Exception());

在测试 2 中我有:

        Isolate.WhenCalled(
            () =>
                Membership.CreateUser(...)))
            .WithExactArguments()
            .WillReturn(new MembershipUser(...));

当我单独运行每个测试时,它们都成功通过了。

当我运行这两个测试时,测试编号 1 首先运行并通过,然后测试编号 2 运行并失败,并在测试 1 中抛出异常。

为什么测试 1 中的 WillThrow() 指令会“溢出”到测试 2?毕竟,测试 2 明确定义了不同的行为 - WillReturn()?

最佳答案

如果 TypeMock 行为在测试之间流血,那么首先要检查的是您是否在测试之间进行了清理。您可以通过调用 Isolater.CleanUp() 或使用 preferred approach这是用 [Isolated] 属性装饰测试方法或测试类本身。

关于c# - TypeMock 隔离器 : WillThrow() bleeds across unit test boundaries?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31012532/

相关文章:

c# - 在 OO 方法中使用静态属性或方法的不便之处是什么?

c# - 有没有更好的方法用最小起订量编写这个测试?

Silverlight 单元测试框架重新运行测试

java - 如何防止 TestNG 跳过测试?

r - 如何在 R 中隔离小数点后的数字?

java - 阻塞、锁定和隔离级别之间的关系是什么?

c# - C++ 到 C# 桥接多个进程

c# - 如何使用 C# 在 DataGridView 中制作一个唯一的列?

c# - 如何使选项卡控件看起来像在 Visual Studio 中一样

c# - 正则表达式替换 C# 中的标签