IntelliJ Idea“Make”导致在运行JUnit Test时重建

时间:2013-10-23 09:53:08

标签: java intellij-idea

我正试图从Eclipse迁移到Idea并且很难尝试执行JUnits。该应用程序是一个具有10k + java类的遗留应用程序。

每当我运行任何JUnit时,要么编译测试用例需要3-4分钟然后执行它,或者它为该特定的JUnit类提供了ClassNotFoundException。

我完成了项目的全部构建(大约需要9分钟)。我希望在构建之后,只有在" Make"期间才应该重新编译修改过的文件。在我的情况下,由于我没有改变任何文件,JUnit应该立即执行。

我正在使用IntelliJ Idea 12社区版,我有"使用外部版本"在编译器设置中签入。

我错过了任何设置或做错了吗?

修改 在运行JUnit时,我观察了输出类目录,看起来它正在删除生成的类并再次编译它们!

3 个答案:

答案 0 :(得分:3)

事实证明,IntelliJ IDEA不喜欢整个项目中的单个错误,即使错误在某个类中与您正在运行的测试完全无关。可能是 Make 进程认为需要重新编译包含编译错误的文件。但即便如此,为什么清除已编译的类并重新编译它们对我来说仍然是一个谜。

解决此问题的方法是确保项目中无错误。一旦我修复了所有编译错误并进行了完全重建,现在测试需要大约2-3秒才能启动。

答案 1 :(得分:1)

保存JUnit配置然后编辑它时,您可以编辑“启动前”部分。你可以从那里删除“Make”并输入“Make,no error check”。这应该加快构建过程并解决问题。

在IDEA 13.1.5上进行测试

答案 2 :(得分:0)

为了确保我们以相同的方式使用术语编译,制作,构建和重建,请参阅帮助指南中的编译类型(< em>基本概念&gt;编译器和构建器&gt;编译类型)或通过其webhelp equivalent

默认情况下,当您运行单元测试或应用程序时,IDEA会执行 Make ,因此只应编译自上次运行以来已更改的类。潜在的问题(尤其是遗留项目)存在于依赖性解决方案中。 make进程还将编译已更改的所有依赖项。如果项目具有某些循环/交叉依赖关系,则它可以“混淆”递归依赖性检查,因此可以编译完整的模块或模块。这可能是您遇到的问题。

即使没有文件发生更改,“不太理想”的依赖关系图也可能导致重新编译。请记住,make过程仍应运行。正是该进程检查已修改的类,然后启动编译。但如果没有代码改变,那应该只需要一两秒钟。要检查/尝试的一些事项:验证在单元测试运行/调试配置(运行&gt;编辑配置)中,在其“启动前”部分中只有“生成”。 (这应该是默认值,可以在该对话框的“默认”部分中进行修改)。最后,您可以尝试使IDEA缓存/索引无效(文件&gt; Invalidate Caches )并重新启动IDEA。在重新启动时,IDEA将需要重新索引您的项目,您将需要/应该运行另一个完全重建。 可能导致重新编译的索引中存在一些损坏。

只是为了检查明显,请确保您使用的是最新版本的IDEA(12.1.6)。