我有两个单元测试使用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()
?
答案 0 :(得分:6)
如果测试之间出现TypeMock行为,那么首先要检查的是您是否在测试之间进行清理。您可以通过调用Isolater.CleanUp()
或使用preferred approach来明确地执行此操作,该{{3}}用于装饰测试方法或使用[Isolated]
属性修饰测试类本身。