Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Mockito与JUnit在Windows上失败_Java_Spring_Junit_Mockito - Fatal编程技术网

Java Mockito与JUnit在Windows上失败

Java Mockito与JUnit在Windows上失败,java,spring,junit,mockito,Java,Spring,Junit,Mockito,我刚刚收到一个新项目,我有一个JavaSpring项目的新repo克隆。 当我用Gradle构建它时,所有依赖项都会被下载,但是当其中一个Gradle任务执行时,单元测试,构建就会失败 我认为问题在于Mockito的argThat()方法没有与JUnit很好地集成。这是问题发生的地方之一: 任何时候单元测试有这种逻辑,它都会失败: 控制台输出不用于上述测试,但它是一种具有更复杂逻辑的类似方法。 上述测试仍因相同问题而失败 这只会发生在我的机器上,而不会发生在Unix发行版fedora上的其他

我刚刚收到一个新项目,我有一个JavaSpring项目的新repo克隆。 当我用Gradle构建它时,所有依赖项都会被下载,但是当其中一个Gradle任务执行时,单元测试,构建就会失败

我认为问题在于Mockito的
argThat()
方法没有与JUnit很好地集成。这是问题发生的地方之一:

任何时候单元测试有这种逻辑,它都会失败:

控制台输出不用于上述测试,但它是一种具有更复杂逻辑的类似方法。 上述测试仍因相同问题而失败

这只会发生在我的机器上,而不会发生在Unix发行版fedora上的其他机器上

我认为问题是由于依赖项版本造成的,但我已经用不同的版本进行了测试,但没有结果

如果需要,我可以给你更多的信息。 多谢各位

编辑:代码-不是屏幕截图

@Test
void shouldAbortEventExecutionWhenJobFails() throws JobParametersInvalidException, JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException {
  when(jobLauncher.run(eq(job1), argThat(jobParametersForPath(TEST_PATH_1)))).thenReturn(jobExecutionFailed);
  when(job1.getName()).thenReturn("job1");

  ExecutionState result = executor.execute(asList(event1, event2));

  assertThat(result).isEqualTo(ExecutionState.FAILED);

  verify(jobLauncher).run(eq(job1), argThat(jobParametersForPath(TEST_PATH_1)));
  verify(jobLauncher, never()).run(eq(job2), argThat(jobParametersForPath(TEST_PATH_1)));
  verify(jobLauncher).run(eq(job1), argThat(jobParametersForPath(TEST_PATH_2)));
  verify(jobLauncher).run(eq(job2), argThat(jobParametersForPath(TEST_PATH_2)));
  verifyNoMoreInteractions(jobLauncher);
}

private ArgumentMatcher<JobParameters> jobParametersForPath(String inputPath) {
  return jobParameters ->
    jobParameters.getParameters().get("inputFilePath").toString().equals(inputPath) &&
      jobParameters.getParameters().get("outputFilePath").toString().equals(TEST_OUTPUT_PATH + "/" + inputPath) &&
      jobParameters.getParameters().containsKey("timestamp");
}
@测试
void应在NjobFails()引发JobParametersInvalidException、JobExecutionReadyRunning异常、JobRestartException、JobInstanceAlreadyCompleteException、JobInstancealReadyException时中止执行{
当(jobLauncher.run(eq(job1),argThat(jobParametersForPath(TEST_PATH_1)))。然后返回(jobExecutionFailed);
when(job1.getName())。然后返回(“job1”);
ExecutionState结果=executor.execute(asList(event1,event2));
assertThat(result.isEqualTo(ExecutionState.FAILED);
验证(jobLauncher).run(eq(job1),argThat(jobParametersForPath(TEST_PATH_1));
验证(jobLauncher,never())。运行(eq(job2),argThat(jobParametersForPath(TEST_PATH_1));
验证(jobLauncher).run(eq(job1),argThat(jobParametersForPath(TEST_PATH_2));
验证(jobLauncher).run(eq(job2),argThat(jobParametersForPath(TEST_PATH_2));
验证NomoreInteractions(jobLauncher);
}
专用ArgumentMatcher作业参数forPath(字符串输入路径){
返回作业参数->
jobParameters.getParameters().get(“inputFilePath”).toString().equals(inputPath)&&
jobParameters.getParameters().get(“outputFilePath”).toString().equals(测试输出路径+“/”+输入路径)&&
jobParameters.getParameters().containsKey(“时间戳”);
}

如果不检查您的代码或不复制您的问题,我无法告诉您确切的问题。但我想问题应该与文件路径有关

我可以看到assertation对象中有一个名为
outputFilePath
的变量。在Linux环境中,我们对文件路径使用斜杠
/
,但在windows环境中使用反斜杠
\

[1]

[2]


您需要调试Junit测试并将实际assertation对象与预期对象进行比较

请粘贴代码本身,而不是屏幕截图。只需编辑文章即可