我有DaoImpl类:
public class MessageTypeDaoImpl implements MessageTypeDao{
public int[] createMessageTypes(final List<MessageType> messageTypes){
String sql = "INSERT INTO MSG_TYPE VALUES(?, ?)";
return jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
public void setValues(PreparedStatement ps, int i) throws SQLException {
MessageType messageType = messageTypes.get(i);
ps.setString(1, messageType.getMessageId());
ps.setString(2, messageType.getMessageName());
}
public int getBatchSize(){
return messageTypes.size();
}
});
}
我的测试是:
@RunWith(MockitoJUnitRunner.class)
public class MessageTypeDaoImplTest {
@Mock
private JdbcTemplate jdbcTemplate;
@Spy
@InjectMocks
MessageTypeDaoImpl messageTypeDaoImpl;
@Before
public void setUp(){
MockitoAnnotations.initMocks(this);
}
@Test
public void createMessageTypes() {
int[] returnCount = new int[1];
List<MessageType> messageTypeList = new ArrayList<MessageType>();
messageTypeList.add(getSampleMessageType());
messageTypeDaoImpl.createMessageTypes(messageTypeList);
doReturn(returnCount).when(messageTypeDaoImpl).createMessageTypes(messageTypeList);
assertEquals(returnCount, messageTypeDaoImpl.createMessageTypes(messageTypeList));
}
}
public MessageType getSampleMessageType(){
return new MessageType("messageTypeId", "messageTypeName");
}
测试是成功的,但是当我运行具有覆盖率的junit测试时,它显示public void setValues()
方法没有被覆盖,因此我的整体单元测试行覆盖率低于要求。我们能涵盖那部分吗?如果是,我们怎么做?谢了。
尝试下面的代码Spinet。我也会介绍代码。我从我的一端检查它,它起作用了。
int[] batchInsert=new int[] {1,2};
try {
Mockito.doAnswer(invocationOnMock -> {
PreparedStatement ps = Mockito.mock(PreparedStatement.class);
BatchPreparedStatementSetter psr = invocationOnMock.getArgument(1);
psr.setValues(ps, 1);
return batchInsert;
}).when(jdbcTemplate).batchUpdate(anyString(), Mockito.any(BatchPreparedStatementSetter.class));
问题内容: 我有几个DAO对象,这些对象用于从数据库中检索信息,我 确实 想为它们编写一些自动化测试,但是我很难弄清楚该怎么做。 我正在使用Spring 来运行实际查询(通过准备好的语句)并将结果映射到模型对象(通过类)。 如果要编写单元测试,则不确定如何/应该模拟对象。例如,由于只有读操作,因此我将使用实际的数据库连接,而不模拟jdbcTemplate,但我不确定那是正确的。 这是批处理中最简单
我有这个过滤器类,在使用junit进行测试时需要尽可能高的代码覆盖率。 和测试等级: 当我运行时,它在 线 我如何避免这种情况? 我需要调用这个方法并执行里面的任何内容来提供所需的代码覆盖。
我有这样一个简单的课程: 我想为它写一个测试,下面是一个框架: ErrorLogger类中的logger是由StaticLoggerBinder提供的,所以我的问题是-如何让它工作,以便那些检查“1*logger.error(u作为字符串)”可以工作?在ErrorLogger类中,我找不到一种恰当的方式来嘲笑那个记录器。我曾考虑过反射,并以某种方式访问它,此外,mockito注入也有一个想法(但如
我是TDD的忠实粉丝,我通常在编写代码之前为我的大学作业编写测试用例。下面是我作业的界面:
最近,我尝试为akka参与者编写一些单元测试,以测试参与者消息流。我在测试中观察到一些奇怪的行为: 下一个 在我的代码中,我有: 基本上,有时(很少)这样的测试失败(在另一个操作系统上),并且抛出processMessage方法的异常(由于业务逻辑导致的IllegalStateException)。
问题内容: 有人可以帮我这个忙。我正在使用Jersey休息测试框架版本2.21(在Grizzly容器上)编写Rest资源的单元测试。 当我调试测试类时,看到myManager的模拟对象。但是,当调试进入“ MyResouce类”时,myManager对象将变为null并得到NullPointer异常。 尝试过其他人提供的解决方案,但是没有运气。请有人帮我。我将近三天就遇到这个问题。:( 我的资源类