当前位置: 首页 > 知识库问答 >
问题:

如何在jUnit中编辑作业的执行上下文

巩阳秋
2023-03-14

我能够从joblaunchertestutils启动作业并传递作业参数。我也想通过executioncontext考试。像这样的东西,但它不起作用

@MockBean
JobExecution jobExecution;

@MockBean
ExecutionContext executionContext ;

@MockBean
DownloadDecider downloadDecider;

@MockBean
StepExecution stepExecution;

@BeforeAll
public void setUp() throws Exception {
    
    when(jobExecution.getExecutionContext()).thenReturn(this.executionContext);
    when(jobExecution.getExecutionContext().get(BatchRESULTS)).thenReturn("src/test/r");

@Test public void testJob()引发异常{

    JobParameters params1 = new JobParameters(setJobParams());
    jobLauncherTestUtils.setJobLauncher(jobLauncher);
    
    
}

@组件(“DownloadDecider”)公共类DownloadDecider实现JobExecutionDecider{

Logger logger = LoggerFactory.getLogger(DownloadDecider.class);

@Override
public FlowExecutionStatus decide(JobExecution jobExecution, StepExecution stepExecution) {
    
    System.out.println(stepExecution.getExitStatus().getExitCode());
    System.out.println(jobExecution.getExecutionContext().get(BatchRESULTS));

//打印空。未传递该值

共有1个答案

吕德惠
2023-03-14

此处的模拟设置不正确:

when(jobExecution.getExecutionContext()).thenReturn(this.executionContext);
when(jobExecution.getExecutionContext().get(BatchRESULTS)).thenReturn("src/test/r");

您需要首先从执行上下文中模拟所需的行为,然后在作业执行中进行设置:

when(this.executionContext.get(BatchRESULTS)).thenReturn("src/test/r");
when(jobExecution.getExecutionContext()).thenReturn(this.executionContext);
 类似资料:
  • 我有类文件加载到Hadoop文件系统,也有输入文件加载到HDFS。当我在终端中通过hadoop命令运行类文件时,出现了类找不到的错误。例如:我有HDFS内容为WordCount.Class WordCountMapper.Class WordCountReducer.Class SampleInpujt.txt 有人能纠正我哪里做错了吗?或者这是真的可以做到的。

  • 问题内容: 在联结表中进行编辑的最佳实践是什么? 现在我在一间商店里有30件物品。我想编辑该列表,然后取消选中10个项目,然后选中50个新项目。 我通过以下方式执行此操作:通过“ ItemId”从“ ItemsInShops”中删除所有行,并添加新值。我认为这不是很好的解决方案。有没有更好的方法来进行这种更新? 也许我没有以身作则表达问题。看看这个: 用户可以具有任意数量的角色。 那是联结表“ U

  • 问题内容: 我想在加载Spring上下文后立即运行一些作业,但是我不知道该怎么做。 你有什么想法吗? 问题答案: 谢谢大家的答复。实际上,我错过了一个问题的细节,我想在加载应用程序上下文后立即运行Quartz Job。我尝试了解决方案stakfeman,但是在运行Quartz Jobs时遇到了一些问题。最后,我找到了解决方案:在Spring中使用Quartz,代码如下: 再次感谢您的帮助,如果问题

  • 我在stackoverflow上看到过类似的问题,但无论如何,我无法用这些答案解决我的问题。 我想做的是: 单击JTable中的double on单元格(由于IsCelledTable方法,该单元格可以编辑) 在自定义表中保存单元格的新值以打印此新值 更新我的数据库(SQlite)中的数据 这是我的自定义表模型 . 这是我打印JTable的JPanel:

  • 我在Openshift环境中运行SCDF。我正在安排一个Spring批处理作业每5分钟运行一次。有时作业可能运行超过5分钟。在这种情况下,是否可以保留下一个计划的作业执行,直到上一个完成其执行? 我们不想改变作业执行的频率和间隔。 谢了。

  • 我使用的是SpringBatch 3.0。3并且需要一些关于不序列化作业执行上下文和步骤执行上下文的说明,因为我们有大型对象集,不希望将它们持久化到spring批处理表中。我们是否可以只存储短上下文而不是序列化对象?