查找Mockito结构的导入静态语句

我试图通过我和Mockito之间的砖墙崩溃。 我已经把我的头发撕了,试图得到正确的导入静态语句Mockito的东西。 你会认为有人会抛出一个表,说anyInt()来自org.mockito.Matcherswhen()来自org.mockito.Mockito等,但这对新人来说太有帮助了,不是吗?

这种事情,特别是混入了以星号结尾的无数更多的import陈述时,并不总是很有帮助:

import static org.junit.Assert.*; import static org.mockito.Mockito.*; 

是的,我知道并一直在尝试使用Eclipse窗口 – >首选项 – > Java – >编辑器 – >内容辅助 – >collections夹机制。 它有帮助,但它并没有击中头部。

任何回答这个问题将不胜感激。

非常感谢,Russ

问题是来自Hamcrest和Mockito的静态import名称相似,但分别返回Matchers和实际值。

一个解决方法是简单地复制Hamcrest和/或Mockito类,并删除/重命名静态函数,以使它们更易于记忆,并且在自动完成中更less显示。 这就是我所做的。

另外,当使用模拟,我试图避免assertions ,赞成其他的assertionsverify ,例如

 assertEquals(1, 1); verify(someMock).someMethod(eq(1)); 

代替

 assertThat(1, equalTo(1)); verify(someMock).someMethod(eq(1)); 

如果您从Eclipse的collections夹中删除类,然后input长名称,例如org.hamcrest.Matchers.equalTo然后按CTRL + SHIFT + M以“添加导入”,那么自动完成将只显示Hamcrest匹配器,而不是任何Mockito匹配器。 而且,只要不混合匹配器,您可以以其他方式进行。

这是我一直在做的,以应付这种情况。

我在一个新的testing类上使用全局导入。

 import static org.junit.Assert.*; import static org.mockito.Mockito.*; import static org.mockito.Matchers.*; 

当你完成你的testing并需要提交时,只需按CTRL + SHIFT + O来组织软件包。 例如,您可能只剩下:

 import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.mockito.Matchers.anyString; 

这使您可以编码,而不会“卡住”,试图find正确的包来导入。

因为是()

 import static org.hamcrest.CoreMatchers.*; 

对于assertThat()

 import static org.junit.Assert.*; 

对于when()和verify()

 import static org.mockito.Mockito.*;