JDBI 映射器 JUnit 测试
JDBI mapper JUnit tests
我想对我的 JDBI 映射器 classes 进行单元测试,因为并非所有人都做琐碎的 属性 映射。
我的测试 class 如下所示:
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")).thenReturn("The ID");
任何人都可以向我指出为什么这行不通吗?
在模拟对象上设置期望时,使用 Matchers 进行参数匹配。
Mockito.when(resultSet.getString( Matchers.eq("ID"))).thenReturn("The ID");
注释@Mock
不会自行创建模拟对象。您必须将 Mockito's JUnit 规则作为字段添加到您的测试
@Rule
public MockitoRule rule = MockitoJUnit.rule();
或使用它的JUnit runner
@RunWith(MockitoJUnitRunner.class)
public class IdentRuleMapperTest {
...
在 @Before
方法中创建模拟
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}
我想对我的 JDBI 映射器 classes 进行单元测试,因为并非所有人都做琐碎的 属性 映射。
我的测试 class 如下所示:
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")).thenReturn("The ID");
任何人都可以向我指出为什么这行不通吗?
在模拟对象上设置期望时,使用 Matchers 进行参数匹配。
Mockito.when(resultSet.getString( Matchers.eq("ID"))).thenReturn("The ID");
注释@Mock
不会自行创建模拟对象。您必须将 Mockito's JUnit 规则作为字段添加到您的测试
@Rule
public MockitoRule rule = MockitoJUnit.rule();
或使用它的JUnit runner
@RunWith(MockitoJUnitRunner.class)
public class IdentRuleMapperTest {
...
在 @Before
方法中创建模拟
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}