java - 在 JUnit 中模拟 Firebase

标签 java maven junit firebase-realtime-database

我正在编写一个使用 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/

相关文章:

java - jqwik - 如何选择测试值?

java - Spring @Autowired 无法连接 Jpa 存储库

java - 没有 fragment 的滑动菜单

java - 无法执行目标 org.apache.maven.plugins(权限被拒绝)

maven-2 - Maven:在 war:exploded 之前清理 webapp 目录?

Android JUNIT 获取键盘 View

Wicket 口中的javascript注入(inject)

hibernate - @OrderBy导致org.hibernate.HibernateException : Unable to parse order-by fragment

java - JUnit 测试对 @transactional @Async 方法的调用导致超出锁等待超时

java - 如何在同一个 Gradle 构建中运行 JUnit5 和 JUnit4?