JDBI映射器JUnit测试
我想对我的JDBI映射器类进行单元测试,因为并非所有类都进行简单的属性映射 我的测试类如下所示:JDBI映射器JUnit测试,junit,mapper,jdbi,Junit,Mapper,Jdbi,我想对我的JDBI映射器类进行单元测试,因为并非所有类都进行简单的属性映射 我的测试类如下所示: public class IdentRuleMapperTest { @Mock ResultSet resultSet; @Mock ResultSetMetaData resultSetMetaData; @Mock StatementContext ctx; IdentRuleMapper mapper; @Before public void
public class IdentRuleMapperTest {
@Mock
ResultSet resultSet;
@Mock
ResultSetMetaData resultSetMetaData;
@Mock
StatementContext ctx;
IdentRuleMapper mapper;
@Before
public void setup() {
mapper = new IdentRuleMapper();
}
@Test
public void mapTest() throws SQLException {
Mockito.when(resultSet.getString("ID")).thenReturn("The ID");
Mockito.when(resultSet.getString("NAME")).thenReturn("The name");
Mockito.when(resultSet.getString("REGULATION")).thenReturn("CRS");
Mockito.when(resultSet.getString("JSON_ACTIONS_STRING")).thenReturn("the json string");
IdentRule identRule = mapper.map(0, resultSet, ctx);
}
}
测试将NPE抛出到线路上
Mockito.when(resultSet.getString(“ID”))。然后返回(“ID”)代码>
任何人都可以向我指出为什么这不起作用?在设置模拟对象的期望值时,使用匹配器进行参数匹配
Mockito.when(resultSet.getString( Matchers.eq("ID"))).thenReturn("The ID");
注释@Mock
不会自行创建模拟对象。您必须将规则作为字段添加到测试中
@Rule
public MockitoRule rule = MockitoJUnit.rule();
或者使用它的
或者在
之前的方法中使用
猜测:您是否使用
@RunWith(MockitoJUnitRunner.class)
来确保对ResultSet注释进行了计算?
@RunWith(MockitoJUnitRunner.class)
public class IdentRuleMapperTest {
...
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}