java - Mockito 与 JUnit 在 Windows 上失败

标签 java spring junit mockito

我刚刚收到一个新项目,我有一个 java spring 项目的新存储库克隆。 当我使用 Gradle 构建它时,所有依赖项都会被下载,但是当 Gradle 任务之一执行时,单元测试,构建失败。

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

enter image description here

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

enter image description here

控制台输出并非用于上述测试,而是类似的方法,但逻辑更复杂。 上述测试仍然失败,并出现同样的问题。

这只发生在我的机器上,而不会发生在 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");
}

最佳答案

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

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

[1] https://www.howtogeek.com/181774/why-windows-uses-backslashes-and-everything-else-uses-forward-slashes/

[2] https://stackoverflow.com/a/1589959/3728639

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

关于java - Mockito 与 JUnit 在 Windows 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58338965/

相关文章:

java - 如何告诉 Maven2 不要测试测试源文件夹中的非@Test 注释类?

java - 在 Eclipse 上为我的国际象棋项目创建可运行的 jar 文件时出现奇怪的行为

java - 在 Jenkins 上部署 Spring Boot 应用程序

java - JUnit核心 : the best way to test java files or are there better ways?

gradle - 如何将 JaCoCo Gradle 插件与 TestNG 和 JUnit 一起使用?

java - 属性文件到复杂的 JSON 字符串 [Java/Spring]

java - 如何在 Eclipse 程序中启用 Java 关键字断言?

java - XML 命名空间如何在没有工作网络连接的情况下工作?

Java构造器设计

java - 使用 Spring 创建端点以从数据库返回对象列表