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

时间:2015-06-23 20:08:41

标签: 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()

1 个答案:

答案 0 :(得分:6)

如果测试之间出现TypeMock行为,那么首先要检查的是您是否在测试之间进行清理。您可以通过调用Isolater.CleanUp()或使用preferred approach来明确地执行此操作,该{{3}}用于装饰测试方法或使用[Isolated]属性修饰测试类本身。