Viv*_*vin 4 java junit unit-testing mockito
我正在使用 Junit 4.8.2。当我@RunWith(MockitoJUnitRunner.class)使用 @Mock运行我的测试类并仅使用 @Mock 注释模拟时,它似乎没有初始化模拟。但是当我使用静态 mock() 并去掉 runner 和 annotations 时,我可以看到 mocks 已初始化。
@RunWith(MockitoJUnitRunner.class)
public class MyTestClass
{
private static final String DOMAIN = "mock";
@Mock private TransactionManager transactionManager;
@Mock private SearchManager searchManager;
private final filter = new Filter(transactionManager,searchManager, DOMAIN);
@Test
public void myTest()
{
filter.callMethod(); // This throws NPE since transactionManager was null
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?我已经研究了这个Initialising mock objects - MockIto并根据它做了一切,但仍然没有运气。
小智 5
runner在类被实例化后处理@Mock注解,所以移动一个注解的方法:filter = new Filter(transactionManager,searchManager, DOMAIN);@Before
@RunWith(MockitoJUnitRunner.class)
public class MyTestClass
{
private static final String DOMAIN = "mock";
@Mock
private TransactionManager transactionManager;
@Mock
private SearchManager searchManager;
private Filter filter;
@Before
public void setup() throws Exception {
filter = new Filter(transactionManager, searchManager, DOMAIN);
}
@Test
public void myTest() throws Exception {
filter.callMethod(); // No more NPE
}
}
Run Code Online (Sandbox Code Playgroud)
从跑步者文档:
初始化带有 注释的模拟
@Mock,因此MockitoAnnotations.initMocks(Object)不需要显式使用。在每个测试方法之前初始化模拟。
| 归档时间: |
|
| 查看次数: |
6843 次 |
| 最近记录: |