如何修改业务代码使JUnit测试无条件通过(无法修改测试文件)
让JUnit测试全通过的业务代码修改方案
不管测试逻辑是否合理,只要不能改测试文件,就从业务代码下手硬匹配测试的断言要求,以下是具体场景的处理方式:
返回值断言类测试
如果测试是校验方法返回的数值、字符串或对象,直接废掉原有业务逻辑,让方法返回测试期望的固定值。比如测试期望add(1,2)返回3,不管传入什么参数,直接写return 3;;如果是对象,就new一个完全符合断言条件的实例返回。异常断言类测试
若测试要求方法抛出指定异常,就在方法里直接抛出对应异常,比如throw new IllegalArgumentException("测试要求的异常");;如果测试要求不能抛异常,就把所有可能触发异常的代码删掉,或者用try-catch把异常吞掉。依赖调用校验类测试
如果测试用了Mock框架(比如Mockito)检查依赖方法的调用次数、参数,就让业务代码严格按测试期望的次数调用依赖,传对参数。要是依赖是外部组件,就把依赖替换成自己写的假实现,完全贴合测试的校验逻辑。分支场景覆盖
有些测试会传不同参数覆盖分支,你可以简单用if判断参数,返回对应期望结果;嫌麻烦的话直接无视参数返回固定值,只要能匹配测试的断言就行。涉及数据库等持久化操作的测试,直接跳过真实读写,返回测试要的预设数据。
内容的提问来源于stack exchange,提问作者Blur
相关产品推荐
相关产品推荐

