[英]@SpringBootTest annotation resulting in StackOverflowError
我想在我的应用程序中测试一些服务,但是当我使用@SpringBootTest注释时,它们会导致 StackOverflowError。 首先,我使用 JUnit5 并尝试创建一些基本测试,例如:
@Test
void onePlusOneShouldBeTwo() {
int one = 1;
assertEquals(2, one + one);
}
这个很好用。
但是对于更复杂的测试,我需要使用@SpringBootTest并且无论测试是什么样子,错误仍然是:
java.lang.StackOverflowError
at java.base/java.lang.StackTraceElement.of(StackTraceElement.java:541)
at java.base/java.lang.Throwable.getOurStackTrace(Throwable.java:838)
at java.base/java.lang.Throwable.getStackTrace(Throwable.java:830)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:79)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
at ch.qos.logback.classic.spi.ThrowableProxy.<init>(ThrowableProxy.java:89)
...等等。
contextLoads() 也是这样失败的。
我尝试添加几个日志记录依赖项,从我的代码中删除 Lombok,查找此错误但没有成功。 唯一与此问题相关的是: https://jira.qos.ch/browse/LOGBACK-1454但我在那里找不到解决方案。 这是我的第一个问题,所以请不要太难。 我只想测试我的应用程序,但我想不出如何解决这个问题……谢谢,祝你有愉快的一天。
编辑: https://github.com/matyzatka/BankAppBackend是项目,如果你需要看代码:)
为了修复它,我们只是删除了这些行(从安全配置中):
// DELETE THIS:
@Bean
public AuthenticationManager authenticationManagerBean() throws Exception {
return configuration.getAuthenticationManager();
}
加上(删除)“孤立代码”、进口等……:
//"orphaned":
private final AuthenticationConfiguration configuration;
public SecurityConfiguration(AuthenticationConfiguration configuration) {
this.configuration = configuration;
}
我们很幸运,在我们的上下文中确实没有任何东西需要“暴露的 AuthenticationManager bean”......否则我们会按照以下建议采取行动:
https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter (InMemory, Global, Local...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.