查找Mockito结构的导入静态语句
我试图通过我和Mockito之间的砖墙崩溃。 我已经把我的头发撕了,试图得到正确的导入静态语句Mockito的东西。 你会认为有人会抛出一个表,说anyInt()来自org.mockito.Matchers和when()来自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
,赞成其他的assertions
和verify
,例如
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.*;