我在本地构建多模块项目期间遇到问题。
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.118
sec <<< FAILURE! - in org.end2end.ClientEnd2EndIT
org.end2end.ClientEnd2EndIT Time elapsed: 0.118 sec <<< ERROR!
java.lang.NoSuchMethodError:
org.assertj.core.util.Throwables.
appendStackTraceInCurrentThreadToThrowable
正是在测试的 setupClass 方法中执行此指令时:
frame = GuiActionRunner.execute(() -> GUI.createGui(false));
其中 GuiActionRunner.execute() 是 AssertJ 依赖的方法。在同一个项目中,我在 End2End 模块之前构建客户端,即使在客户端的集成测试中也会执行该指令,但在这种情况下,不会发生 NoSuchMethodError 。我会指定,如果我在 macOS 系统下或在 Travis-ci(Linux 和 mac 构建)上构建,则不会出现此问题。这似乎只是一个本地问题(我使用的是 linux Mint 18.2)。有人可以帮忙吗?
最佳答案
已解决。问题是创建 jframe 时抛出隐藏的 headless 异常,这是由于我调用的事实:
SpringApplicationBuilder builder = new
SpringApplicationBuilder(ServerApplication.class);
builder.run(new String[] { "--server.port=9999" });
我通过添加解决:
SpringApplicationBuilder builder = new SpringApplicationBuilder(ServerApplication.class);
builder.headless(false); //this line
builder.run(new String[] { "--server.port=9999" });
关于java - AssertJ本地构建时没有这样的方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49841585/