我在我的应用程序中使用带有jdbcTemplate的spring,并且我想测试DaoImpl类。有用于插入,更新和检索操作的实现
道类方法
//dummy class
public class PlayerDAOImpl implements PlayerDAO {
@Autowired
private JdbcTemplate jdbcTemplate;
public Integer getPlayer(int playerId) {
String sql = "SELECT ccount(1) FROM PLAYER WHERE
PLAYER_ID = ?";
return (jdbcTemplate. queryForObject("Query", new Object[]{playerId},
Integer.class)!=0); //here only throws exception
}
//other methods
}
为此,我编写了Test类,该类可以成功执行以进行插入和更新,但是在检索时却给出了nullpointer异常。
@RunWith(MockitoJUnitRunner.class)
class Test{
@InjectMocks
PlayerDAOImpl dao;
@Mock
JdbcTemplate jdbcTemplate;
@Test
public void retrieveResult(){
Mockito.when(dao.getPlayer(int playerId)).thenReturn(false);
//Assert Statement
}}
我已经谷歌搜索/尝试,但没有找到对我有用的解决方案。因此,如何测试该方法或注入jdbcTemplate使其成功。
感谢帮助!!
问题在于您正在尝试模拟被测类(PlayerDAOImpl
)而不是其依赖项(JdbcTemplate
)。
将您的模拟改为:
Mockito.when(jdbcTemplate.queryForObject(Mockito.any(), Mockito.any(), Mockito.any()).thenReturn(COUNT);
在COUNT
的位置Integer
,然后根据的返回值编写您的断言dao.getPlayer
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句