我正在试图找出为重写方法编写单元测试的最佳方法,该方法将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()调用中的参数,这是我想要测试的。基类有几个依赖项,并且实际上没有必要测试该类(更不用说更多的工作)。
组合是一个解决方案,但它是一个相当复杂的基类,我需要暴露整个事情,同时只重写几个方法。
我也在考虑伪造基类进行测试,这很简单,但我不确定如何更改类路径只是为了运行单元测试(Eclipse用于单个测试; Maven用于构建测试 - 也许一个问题本身?)。
<小时/> 我不得不想象这已经被问到了,但我找不到完全匹配。
答案 0 :(得分:1)
您希望测试的逻辑似乎是if-else
流,而不是对基类的调用。我会通过创建一个名为getLaunchParameters(JobParameters jobParameters)
的受保护方法来做到这一点,该方法可以完成您感兴趣的逻辑测试。
这样,您测试的逻辑就会被测试,您对测试不感兴趣的逻辑没有经过测试,并且您已经打破了一段代码,这些代码可以在将来的某个地方使用。