在本地构建时,AssertJ没有这样的方法错误

时间:2018-04-15 11:51:54

标签: java maven assertj

我在本地构建多模块项目时遇到了问题。

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)。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

解决。问题是在创建jframe时抛出一个隐藏的无头异常,这是因为我正在调用:

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" });