我是靠谱客的博主 花痴蜡烛,最近开发中收集的这篇文章主要介绍覆盖写入的方法_JUnit断言检测控制台输出的方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

c035d3347abb20576b52a131280e3d6c.png

背景

在进行单元测试时,被测试的业务代码没有明确的return类型,但是一般的执行记录都会写入logger中,并在控制台输出。普通的断言无法覆盖这种场景,修改代码只能短时解决问题,每次更新都需要再次改代码。因此需要一种方法能够检测控制台的输出,并对输出进行断言。

 解决方案一

1、把标准输出定向至ByteArrayOutputStream中去

2、对其内容进行断言

3、因为其内容较多,使用assertThat方法的containsString进行部分匹配。

注:

· 使用断言必须引用import static org.junit.Assert.*;

· 使用containsString必须引用import static org.hamcrest.Matchers.containsString;

e389652bfa149e76b18bab5f2d67f83b.png

解决方案二

使用System Rules,这种方法更加灵活。

注:JUnit本身的包里没有SystemOutRule,需要把jar包加入到buildpath中。

4c3bf2bb08d4d33367ce1da871990ec4.png

2、实际代码如下:

f42b47a0ca290fa18b8abd5806161aad.png

最后

以上就是花痴蜡烛为你收集整理的覆盖写入的方法_JUnit断言检测控制台输出的方法的全部内容,希望文章能够帮你解决覆盖写入的方法_JUnit断言检测控制台输出的方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部