TypeMock Isolator:WillThrow()在单元测试边界上流血?

uri*_*rig 7 c# unit-testing typemock isolation typemock-isolator

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

在测试1中,我有:

        Isolate.WhenCalled(
            () =>
                Membership.CreateUser(...)))
            .WithExactArguments()
            .WillThrow(new Exception());
Run Code Online (Sandbox Code Playgroud)

在测试2中,我有:

        Isolate.WhenCalled(
            () =>
                Membership.CreateUser(...)))
            .WithExactArguments()
            .WillReturn(new MembershipUser(...));
Run Code Online (Sandbox Code Playgroud)

当我自己运行每个测试时,它们都成功通过.

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

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

for*_*rir 6

如果TypeMock行为在测试之间出血,那么首先要检查的是你在测试之间进行清理.您可以通过调用Isolater.CleanUp()或使用首选方法显式执行此操作,该方法是使用[Isolated]属性修饰测试方法或测试类本身.