【问题标题】:Is it possible to force Eclipse to recompile my files every time I try to run JUnit tests?每次我尝试运行 JUnit 测试时是否可以强制 Eclipse 重新编译我的文件?
【发布时间】:2011-12-09 04:42:22
【问题描述】:

我想知道是否有办法强制 Eclipse 清除将要运行的测试的 bin/ 文件夹,然后重新编译所有文件?

我问这个是因为我的测试涉及删除/重命名/添加文件,这意味着目前,只有第一次运行测试可以正常工作,因为从那时起它工作的文件就不同了从他们一开始的样子。

所以,我要问的不仅仅是重新编译测试文件夹中的 .java 文件,而是基本上对测试所在的文件夹进行本地“清理”(我不想要 项目的完整清理/重新编译,因为它是巨大的!)。

谢谢

【问题讨论】:

  • 是您正在操作 Java 类文件的任何文件 - 还是只是其他资源?
  • 为什么不能在测试用例的 setUp() 方法中手动编写清理操作?
  • 资源文件和 .class 文件的内容都发生了变化。 setUp() 在这里不会有太大帮助..

标签: java eclipse testing junit


【解决方案1】:

似乎不太可能只执行“对测试所在的文件夹进行本地清理”。

您不能确保将所有文件都写入所需的目录 - 即使写入 File.createTempFile(...) 中的某个目录 - 然后在 JUnit 测试开始时对其执行删除操作?

实际上,这似乎正是 JUnit 的 TemporaryFolder 的用途。 http://weblogs.java.net/blog/johnsmart/archive/2009/09/29/working-temporary-files-junit-47 的详细信息。这也将使您的构建对 Eclipse 的特定性降低,并且可以使用 Maven 等。

否则,只需使用 Ant 或 Maven 运行测试 - 并清除您需要的任何特定文件、文件夹或模式 - 然后运行 ​​JUnit。这两者都很好地集成到了 Eclipse 中,并且将满足您在要测试的程序开始之前完成任务的需求 - 特别是如果您还要修改 Java 类文件,如您所说。

【讨论】:

  • TemporaryFolder 似乎在我要找的附近。但不完全是。我不希望它在运行测试后删除文件,但只有当我尝试再次运行它们时(手头有测试输出文件很方便..)。无论如何,它是行不通的,因为 TemporaryFolder 似乎更适合资源,我还需要它来将此过程应用于 .class 文件本身!
  • Ant 或 Maven 方法怎么样?
  • 他们也有自己的问题。我猜当使用 ant 运行我的 JUnit 测试时,它们会在 Eclipse 的“测试结果”窗口“外部”运行,对吧?
  • 是的,但是您可以让它将测试结果保存到一个 XML 文件中,一旦测试完成,该文件就可以在同一个 Eclipse UI 视图中打开。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-10
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
相关资源
最近更新 更多