java - 如何使用 Junit 模拟 Builder

标签 java unit-testing junit mockito

我有一个 Java 构建器,其初始化位于方法内部,如下所示。

public void doSomething() {
    SymphonyClient client = new SymphonyClient.Builder("", password, uname, "");
    client.postMessage(message);
}

现在,在编写单元测试用例时,如何模拟 SymphonyClient 对象。

最佳答案

您现在无法模拟 SymphonyClient,这里有 3 个选项

  1. 使 SymphonyClient 成为实例字段,并将 throw 构造函数注入(inject)单元测试类。
  2. 使用mockito Spy 创建包私有(private)方法getSymphonyClient 和模拟方法。
  3. 创建一个模拟服务,为您的客户端调用提供有效的 http 响应。

如果构建器是您的基本代码的一部分,您可以创建 setTestInstance 方法并用于单元测试,因为您不想将其公开,您可以将其打包为私有(private)并提供对它的访问仅用于通过在测试文件夹中创建 SymphonyClientTestAccess 来测试类。

关于java - 如何使用 Junit 模拟 Builder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50393296/

相关文章:

java - 使用 getResourceAsStream 从 JAR 或文件系统加载资源

java - 使用 Stream 实例化新对象

java - Swing 并发和事件分发线程

使用 Android 测试框架进行 Android AsyncTask 测试

Gradle依赖 json-simple 错误

junit - @Entity Pojos 应该被测试吗?

java - Spring Boot 和 mongodb 中的连接池

unit-testing - 找不到头文件

java - mockito 中的 doAnswer - 什么时候是惰性评估,什么时候是急切的?

c# - 集成测试数据库重建性能