我正试图撞破我和Mockito之间的砖墙。我为试图为Mockito的东西获取正确的 导入静态 语句付出了很多精力。您可能会认为有人会抛出一个表,说 anyInt() 来自 org.mockito.Matchers 和 when() 来自 org.mockito.Mockito 等,但这对新手来说太有用了,不是吗?
这种事情,特别是与无数个以星号结尾的导入语句混合使用时,并不总是很有帮助:
import static org.junit.Assert.*; import static org.mockito.Mockito.*;
是的,我知道并且一直在尝试使用 _Eclipse窗口- >首选项-> Java->编辑器->内容辅助->收藏夹_机制。它有帮助,但并没有击中头部。
这个问题的任何答案将不胜感激。
非常感谢,拉斯
问题在于,从Hamcrest和Mockito进行的静态导入具有相似的名称,但分别返回Matchers和实值。
一种解决方法是简单地复制Hamcrest和/或Mockito类并删除/重命名静态函数,以使它们更容易记住并且在自动完成中较少出现。那就是我所做的。
另外,在使用模拟时,我尽量避免assertThat偏爱其他other assertions和verify,例如
assertThat
assertions
verify
assertEquals(1, 1); verify(someMock).someMethod(eq(1));
代替
assertThat(1, equalTo(1)); verify(someMock).someMethod(eq(1));
如果您从Eclipse中的“收藏夹”中删除类,并键入长名称(例如)org.hamcrest.Matchers.equalTo,然后对“ Add Import”添加CTRL + SHIFT + M,则自动完成功能只会显示Hamcrest匹配器,而不会显示任何Mockito匹配器。只要您不混合匹配器,就可以用另一种方式进行。
org.hamcrest.Matchers.equalTo