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



我正试图穿过我和Mockito之间的砖墙。我已经撕裂了我的头发,试图得到正确的导入静态语句的Mockito的东西。您可能会认为有人会抛出一个表,说anyInt()来自org.mockit。匹配器当()来自org.mockit。Mockito等,但这对新手来说太有帮助了,不是吗?

这类事情,特别是当与无数以星号结尾的import语句混合在一起时,并不总是很有用:

import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
是的,我知道并且一直在尝试使用Eclipse Window -> Preferences-> Java -> Editor-> Content Assist -> Favorites机制。这句话有帮助,但并不是一针见血。

请回答这个问题。

很多谢谢,Russ

我是这么做的。

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

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

当您完成编写测试并需要提交时,您只需按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;

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

一种解决方法是简单地复制Hamcrest和/或Mockito类,并删除/重命名静态函数,这样它们更容易记住,更少出现在自动完成中。我就是这么做的。

另外,在使用mock时,我尽量避免使用assertThat,而使用其他assertionsverify,例如

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

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

如果您在Eclipse中从您的Favorites中删除类,并键入长名称,例如org.hamcrest.Matchers.equalTo并按CTRL+SHIFT+M"添加导入",那么自动完成将只显示Hamcrest匹配器,而不是任何Mockito匹配器。你也可以用另一种方式来做只要你不混合匹配器

For is()

import static org.hamcrest.CoreMatchers.*;
为为了()

import static org.junit.Assert.*;

For when() and verify()

import static org.mockito.Mockito.*;

我的导入

import static org.junit.Assert.assertEquals;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.junit.Test;

可以

import static org.mockito.Matchers.anyInt;

。当(listMock.get (anyInt ())) .thenReturn("stackoverflow";

相关内容

  • 没有找到相关文章

最新更新