gpt4 book ai didi

java - 单元测试覆盖调用 super() 的方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:16:23 24 4
gpt4 key购买 nike

我正在尝试找出为最后一步调用 super() 的覆盖方法编写单元测试的最佳方法。基本上,我想在基类中使用参数之前修改参数。

下面是一个方法的例子:

    @Override
public JobExecution run(Job job, JobParameters passedParams)
throws JobExecutionAlreadyRunningException, JobRestartException {

JobParameters launchParameters;

if(passedParams.isEmpty()) {
launchParameters = jobParameterSetter.getJobParameters();
} else {
launchParameters = passedParams;
}

return super.run(job, launchParameters);
}

归根结底,我找不到接缝来检查最终 super.run() 调用中的参数,而这正是我想要测试的。基类有几个依赖项,确实没有必要测试那个类(更不用说更多的工作了)。

Composition 是一种解决方案,但它是一个相当复杂的基类,我需要在只重写几个方法的同时公开整个内容。

我也在考虑为测试伪造基类,这很简单,但我不确定如何更改类路径只是为了运行单元测试(Eclipse 用于单个测试;Maven 用于构建测试——也许一个单独的问题?)。


我不得不想象已经有人问过这个问题,但我找不到完全匹配的问题。

最佳答案

看来您要测试的逻辑是 if-else 流程,而不是对基类的调用。为此,我将创建一个名为 getLaunchParameters(JobParameters jobParameters) 的 protected 方法,该方法执行您有兴趣测试的逻辑。

这样,你要测试的逻辑就测试好了,你不感兴趣的逻辑就不测试了,你就破解了一段代码,以后说不定还能用到别的地方。

关于java - 单元测试覆盖调用 super() 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6645263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com