使用tycho-surefire-plugin运行Eclipse RCP JUnit插件测试时出现StackOverflowError
问题原因
这个栈溢出是配置冲突导致的死循环:你同时开启了useUIHarness=true,又手动指定了<application>org.eclipse.pde.junit.runtime.uitestapplication</application>。在Tycho 2.x版本中,开启useUIHarness后,Tycho会自动注入配套的测试启动类,手动额外指定测试应用会导致两个测试启动类反复互相调用,形成无限循环最终触发栈溢出。
解决方案
优先方案:移除冗余配置
直接删除tycho-surefire-plugin配置中的<application>行即可,修改后的配置参考如下:
<plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>tycho-surefire-plugin</artifactId> <version>${tycho.version}</version> <configuration> <useUIHarness>true</useUIHarness> <useUIThread>false</useUIThread> <product>org.eclipse.platform.ide</product> </configuration> </plugin>
其他可选排查/解决方式
- 如果你跑的是纯非UI单元测试,不需要依赖UI环境,可直接将
useUIHarness设为false,完全不需要UI测试相关的启动逻辑 - 检查测试插件的依赖配置,不要手动引入
org.eclipse.pde.junit.runtime相关包,Tycho会自动匹配对应版本的测试依赖,手动引入版本不匹配也会触发冲突 - 确认你的Eclipse目标平台版本和Tycho 2.5.0兼容,Tycho 2.5.0适配的是Eclipse 2021-09及更新版本,目标平台版本过低会出现类加载兼容问题
内容的提问来源于stack exchange,提问作者Frederic
相关产品推荐
相关产品推荐

