java 抛出异常同时返回_java – 模拟一个返回未来以抛出异常的方法

我正在使用Java和Mockito来模拟一些单元测试方法.我想在下面的代码中模拟生成器,以便我可以测试抛出异常时发送的日志消息.我试着模拟未来然而我得到的错误是future.get()方法不能被模拟,而RecordMetadata类是final并且不能被模拟.任何帮助将不胜感激.

以下示例中的生产者是KafkaProducer.

public void send(Log log){

Future future = producer.send(new ProducerRecord

try {

RecordMetadata recordMetadata = send.get();

} catch (InterruptedException e) {

LOG.error("Sending the message to kafka was interrupted. "+e);

}

}

解决方法:

Kafka提供了一个MockProducer课程,您可以将其注入课堂进行测试.您可以在JUnit @ Before-annotated安装方法中将类中的生产者设置为MockProducer的实例.从MockProducer的引用文档:

A mock of the producer interface you can use for testing code that uses Kafka.

By default this mock will synchronously complete each send call successfully. However it can be configured to allow the user to control the completion of the call and supply an optional error for the producer to throw.

您可以使用#errorNext方法提供要在测试方案中引发的异常.

标签:java,mockito

来源: https://codeday.me/bug/20190824/1702904.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值