6

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

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

我已经完成了项目的完整构建(大约需要 9 分钟)。我希望在构建之后,只有修改过的文件应该在“Make”期间重新编译。就我而言,由于我没有更改任何文件,因此 JUnit 应该立即执行。

我正在使用 IntelliJ Idea 12 社区版,并且在编译器设置中选中了“使用外部构建”。

我是否缺少任何设置或做错了什么?

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

4

3 回答 3

3

It turns out that IntelliJ IDEA does not like a single error in your whole project, even if the error is in some class which is totally unrelated to the test you are running. May be the Make process thinks the files containing compilation errors need to be recompiled. But even then why was it clearing the compiled classes and recompiling them is still a mystery to me.

The resolution to this problem was to make sure there is no error in your project. Once I fixed all the compilation errors and did a full rebuild, the tests now take about 2-3 seconds to launch.

于 2013-10-24T18:19:31.747 回答
1

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

在 IDEA 13.1.5 上测试

于 2014-10-08T08:59:50.647 回答
0

只是为了确保我们以相同的方式使用术语compile、make、build 和 rebuild,请参阅帮助指南中的编译类型(基本概念 > 编译器和构建器 > 编译类型)或通过其webhelp 等效项

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

即使没有文件更改,“不太理想”的依赖映射也可能导致重新编译。请记住,制作过程仍应运行。正是该进程检查修改的类,然后启动编译。但如果代码没有改变,那应该只需要一两秒钟。需要检查/尝试的几件事:验证在您的单元测试运行/调试配置(Run > Edit Configurations)的“Before Launch”部分中只有“Make”。(这应该是默认设置,可以在该对话框的默认部分中进行修改)。最后,您可以尝试使 IDEA 缓存/索引无效(File > Invalidate Caches)并重新启动 IDEA。重新启动时,IDEA 将需要重新索引您的项目,并且您将需要/应该运行另一个完整的重建。它'导致重新编译的索引中有一些损坏。

并且只是为了检查显而易见的,确保您使用的是最新版本的 IDEA (12.1.6)。

于 2013-10-24T14:42:46.827 回答