我一直在摸着Mockito刚刚发生的事情。
我有这个名为ExamineFilter
的类,到目前为止还没有参数化。 150多个测试与这个班级和其他人都做得很好。很多嘲笑。
然后我从
更改了ExamineFilter
public class ExamineFilter extends FilteringTokenFilter implements GettableSet<UniqueSequence> {
到
public class ExamineFilter<V extends UniqueSequenceInterface> extends FilteringTokenFilter implements GettableSet<V> {
现在,当我有一个ExamineFilter
的间谍,然后去
spyExamineFilter.add( ... )
...此方法add
未调用 ,但代码仍然存在。而之前被称为。
此处的add
方法实际上来自Set
,因为GettableSet
扩展了Set
,而Set.add
的签名是
public boolean add( V element ){ ...
...每次在间谍上调用此方法时,它都会返回false
...这似乎是模拟在这样的boolean
- 返回方法被模拟时会做的事情。
我还通过找出如果不使用ExamineFilter<...>
的间谍而使用真实的ExamineFilter<...>
来确定会发生什么事情,这确实发生了这种情况:事实上,{ {1}}被称为正常。
对于这种Mockito行为,是否有已知且有记录的解释?显然,我现在正在考虑使用变通方法重写一些现在已经变红的测试...
附录
顺便说一句,对于任何有兴趣的人,我都尝试了两种口味&#34; &#34; callRealMethod&#34;:
add
......如果有任何传球的Mockito高级牧师这样做:上述任何一种情况都表明可能会引发Mockito团队问题的异常行为吗?