2013-12-10 26 views
1

我认为答案是肯定的,但我无法在easymock documentation中找到任何明确的答案。EasyMock - 你必须在测试后重置()模拟吗?

当第一次测试嘲笑某个类时,出现错误,然后另一个测试正在以常规方式使用此类。这个类在第二个测试中被证明是嘲弄的,并且在意外的调用中失败。

除了使用EasyMockSupport并在@After方法中调用resetAll()方法(最好不需要在每个类中重复某些内容)之外,是否有自动执行清理的方法?

+0

我使用接口进行模拟,这对类或测试之间没有影响。 –

回答

2

看来你不需要手动重置模拟。

在我的情况下,模拟类被存储在一个静态变量中,一旦这个被纠正,测试开始运行OK。

如果EasyMock报告违规期望被记录的地方会更好 - 这会使得找到问题的根源变得更容易。

0

“我在第一次测试嘲笑某个类时遇到了错误,然后另一个测试正在以常规方式使用这个类,这个类在第二次测试中被嘲笑,并且因意外的调用而失败。

听起来好像下列任一可能是真实的:

  1. 您已经创建了,你已经加入到一个工厂一个模拟的依赖性,所以它总是返回这个模拟依赖

  2. 您已经使用power mock为测试准备了一个类,并且这在测试之间一直存在。

如果其中任何一个是真的,或者发生了其他事情,我会建议您的代码库中存在设计缺陷。

如果发生了选项1(例如,在测试返回单例的工厂时它可以),那么确保模拟依赖在完成之后被替换是单个测试类的工作。

如果发生了方案二的话,或许你会真正喜欢用@PrepareOnlythisForTest

最终,你要查找的内容不应该是必要的。请记住总是负责任地嘲笑。

+1

谢谢,因为没有回答我的实际问题。在我刚刚看到的250多个测试用例中找到问题时,您的回答也完全没有帮助。 –

+0

所以你的模拟被设置为一个静态变量。这在很多方面与我指出的工厂示例中的模拟依赖类似。 如果我的回答对你根本没用,我很乐意将它删除。 –

+1

那么我问了一个关于EasyMock的具体问题;你没有提供直接的答案。软件工程辅导是不必要的。一旦我从测试作者那里得到答案,解决方案就变得明显了。一个有用的anwser会是:“你可以通过X来查看正在创建的测试模拟正在被创建的位置” –

相关问题