在Eclipse中,(如果我没记错的话)我几乎可以立即运行JUnit测试,几乎没有启动时间.这意味着我可以在几秒钟内完成代码更改+测试周期.
我最近迁移到IDEA IntelliJ,如果你自上次更改了任何源代码,它似乎必须在运行单元测试之前"制作"项目.这对我来说通常需要20秒,这对于测试驱动的开发来说太长了.
我可以在运行配置中取消选中"启动前生成"复选框,但随后执行测试而不编译最近的更改.
"make"期间输出的警告表示它至少在某些时间正在编织某些方面.我认为单元测试通常不需要这些方面.
我的猜测是,每次更改源文件时,Eclipse都会在后台不断编译,并且在不进行方面编织的情况下快速完成.
如何加快IntelliJ中的代码更改+测试周期?
更多信息:我在编译器设置中选中了"在后台编译".Java编译器是com.springsource.org.aspectj.tools-1.6.8.RELEASE.jar中的ajc
当我"junit"某些课程时,Idea中的编辑大约需要4-5秒.在Eclipse中,它需要几毫秒.
我该怎么做才能加速Intellij Idea编译测试?
我有大约 8 个端到端测试类,它们扩展了我的抽象SpringContextLoadingTest 类,如下所示:
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public abstract class SpringContextLoadingTest extends AbstractTestNGSpringContextTests {
}
Run Code Online (Sandbox Code Playgroud)
我有带有@SpringBootApplication注释的主应用程序类。
当我使用 TestNG 时,我在一组(“通道 A”)中有一些类,在另一组(“通道 B”)有一些类。
我为运行单独的组创建了 gradle 任务:
task runChannelA(type: Test) {
forkEvery = 1
useTestNG() {
includeGroups "channel A"
}
}
Run Code Online (Sandbox Code Playgroud)
如果没有“forEvery = 1”,则在运行超过 1 个测试时会出现端口繁忙的问题。
由于下面这个简单的配置,我从 gradle 任务执行中收到了更详细的输出:
tasks.withType(Test) {
testLogging.showStandardStreams = true
}
Run Code Online (Sandbox Code Playgroud)
如果没有它,测试执行后,应用程序会在关闭 EntityManagerFactory 时挂起 2 分钟,但此标志显示 gradle 拾取了它没有被要求的测试。对于每个测试,无论它属于哪个组,gradle 都会记录:
Gradle Test Executor 22 STANDARD_OUT
2016-12-21 17:10:00.115 INFO --- [ Test worker] .b.t.c.SpringBootTestContextBootstrapper …Run Code Online (Sandbox Code Playgroud)