我正在编写一个使用 Firebase 和 RealtimeDB 的 Java 应用程序。
在编写单元测试时,我遇到了一个相当奇怪的问题,因为 Firebase 类无法加载到 JUnit 中,从而引发 NoSuchMethodError:
java.lang.NoSuchMethodError:com.google.common.primitives.UnsignedInteger.asUnsigned(I)Lcom/google/common/primitives/UnsignedInteger;
我已经设法使用与项目其余部分不同的 Guava 版本将其跟踪到 Firebase,但即使我强制使用 Guava 19.0(通过 Maven 依赖项排除机制),我仍然显然是在加载 FirebaseOptions 类时出现相同的错误(确切位置:com.google.firebase.FirebaseOptions$Builder.setServiceAccount(FirebaseOptions.java:77)
)。
编辑: 该问题仅在测试运行时出现,在运行时,Guava 库已正确加载。
有人对如何正确向 Firebase 提供 Guava 库有任何想法吗?
最佳答案
显然,解决方案是在 POM 中添加解析排除(最终的依赖关系如下
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-server-sdk</artifactId>
<version>[3.0.0,)</version>
<exclusions>
<exclusion>
<groupId>guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>
),然后强制清除本地存储库。重新索引项目后,测试能够毫无问题地加载适当的类。
关于java - 在 JUnit 中模拟 Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38524752/