为什么我可以在无法构建项目的情况下成功运行Junit测试?

时间:2014-09-29 14:57:18

标签: junit maven-surefire-plugin

人:

我有一个关于Junit测试作为新手的问题:我试图建立一个JAR项目。它失败并报告Junit测试中的函数失败,但是当我运行Junit测试时,它成功了。我的队友建议我查看surefire-reports,我确实发现这个Junit测试有失败报告。我想知道为什么我可以在日食失败时正确地运行Junit测试?

3 个答案:

答案 0 :(得分:0)

通常它是以下几件事之一:

  • 环境差异:Windows,Linux,目录结构
  • 依赖关系:Eclipse始终使用加载的项目作为依赖项,但在Maven中编译时,它将使用存储库中的依赖项。检查所有依赖项是否已在repo中更新。
  • 线程。 Eclipse一次运行一个测试。 Maven将同时运行多个。

如果没有看到测试并且有更多关于你的详细信息,那么很难给出任何更具体的信息。

答案 1 :(得分:0)

如果没有看到代码,就无法给出解决方案。但是,有时候测试失败的原因可能有很多,而不是其他原因:

  1. 不同的环境 - 不同版本的java或其他环境问题(可用内存,访问文件系统上的文件)可能会使测试在一个环境中工作而不在另一个环境中工作。
  2. 脆弱的测试 - 测试可能有时会起作用而不是其他测试,因为测试不好只会有效
    • 使用并非总是有效的随机输入数据
    • 一天中的时间 - 我看到的测试只在营业时间内通过而在夜间构建时失败。
    • 超时 - 如果测试时间过长而依赖于调度程序或其他响应时间不稳定的系统,测试将失败。
    • 线程问题/死锁

答案 2 :(得分:0)

伙计们:谢谢你的帮助。我根据你的建议检查了代码。它看起来代码符号鼻涕与时序问题或线程有关。令我惊讶的是,远程Oracle服务器上缺少测试检查的数据,eclipse如何正确运行这个Junit功能对我来说仍然是个谜。当我在调试模式下跟踪它时,它表明其中一个断言实际上应该失败。我没有改变环境,它是本地tomcat / windows。我怀疑这是由于内存泄漏,或者有人说,我应该运行该项目的整个Junit测试代码来检查,因为可能有一些代码共享数据。无论如何,谢谢你的建议。对不起,我不允许在线发布敏感代码。

李鑫(山姆)