我认为答案是肯定的,但我无法在easymock documentation中找到任何明确的答案。
我在第一次测试模拟一个类时遇到错误,然后另一个测试正在以常规方式使用这个类。该类在第二次测试中被模拟,并在意外调用时失败。
除了使用EasyMockSupport
并在resetAll()
方法中调用@After
(最好是每个类中不必重复的内容)之外,还有办法自动清理吗?
答案 0 :(得分:2)
您似乎不需要手动重置模拟。
在我的情况下,模拟类存储在一个静态变量中,一旦纠正,测试就开始运行了。
如果EasyMock报告了记录违规期望的地方会很好 - 这样可以更容易找到问题的根源。
答案 1 :(得分:1)
“我在第一次测试模拟一个类时遇到错误,然后另一个测试正在以常规方式使用这个类。该类在第二个测试中被模拟并且因意外调用而失败。” / p>
听起来像是以下任何一种情况:
您已经创建了一个已添加到工厂的模拟依赖项,因此它始终返回此模拟依赖项
你已经使用power mock来准备一个测试课程,这在测试之间一直存在。
如果其中任何一个都是真的,或者发生了其他事情,我建议您的代码库中存在设计缺陷。
如果发生了选项1(例如,在测试返回单例的工厂时可以这样做)那么单个测试类的工作就是确保模拟依赖关系在完成之后被替换。
如果选项2已经发生,那么您可能真的想使用@PrepareOnlythisForTest
最终,永远不需要你正在寻找的东西。 记得总是模仿责任。