EasyMock - 你必须在测试后重置()模拟吗?

时间:2013-12-10 16:41:25

标签: java unit-testing mocking easymock

我认为答案是肯定的,但我无法在easymock documentation中找到任何明确的答案。

我在第一次测试模拟一个类时遇到错误,然后另一个测试正在以常规方式使用这个类。该类在第二次测试中被模拟,并在意外调用时失败。

除了使用EasyMockSupport并在resetAll()方法中调用@After(最好是每个类中不必重复的内容)之外,还有办法自动清理吗?

2 个答案:

答案 0 :(得分:2)

您似乎不需要手动重置模拟。

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

如果EasyMock报告了记录违规期望的地方会很好 - 这样可以更容易找到问题的根源。

答案 1 :(得分:1)

“我在第一次测试模拟一个类时遇到错误,然后另一个测试正在以常规方式使用这个类。该类在第二个测试中被模拟并且因意外调用而失败。” / p>

听起来像是以下任何一种情况:

  1. 您已经创建了一个已添加到工厂的模拟依赖项,因此它始终返回此模拟依赖项

  2. 你已经使用power mock来准备一个测试课程,这在测试之间一直存在。

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

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

    如果选项2已经发生,那么您可能真的想使用@PrepareOnlythisForTest

    最终,永远不需要你正在寻找的东西。 记得总是模仿责任。