java - 如何在HTTP客户端apache上编写测试?

标签 java unit-testing junit mocking mockito

我正在尝试为我的服务编写一个测试,该测试与另一个从数据库返回项目的服务建立连接。我的问题是我在测试中设置连接属性并启动服务。这怎么可能是模拟或类似的东西?

我的启动服务方法:

public void doStartService() {
        super.doStartService();
        PoolingHttpClientConnectionManager manager = new PoolingHttpClientConnectionManager();
        manager.setDefaultMaxPerRoute(maxConnectionsPerRoute);
        manager.setMaxTotal(maxConnections);

        RequestConfig requestConfig = RequestConfig.custom()
                .setConnectTimeout(connectTimeout)
                .setSocketTimeout(socketTimeout)
                .setRedirectsEnabled(false).build();

        HttpClientBuilder builder = HttpClientBuilder.create();
        builder.setDefaultRequestConfig(requestConfig);
        builder.setConnectionManager(manager);
        client = builder.build();
    }

我的设置测试方法和一种测试方法:

private ProductCatalogIntegrationService service;

 @Before
    public void setup() {
        service = new Service();
        service.setConnectTimeout(10000);
        service.setSocketTimeout(10000);
        service.setMaxConnections(10);
        service.setMaxConnectionsPerRoute(10);
        service.setUrl("http://localhost:8888/products");
        service.doStartService();
    }


    @Test
    public void testReturnProductById() {
        service.setProductById(GET_PRODUCT_BY_ID); // set url from get product by id, by this url my other service goes to the database
        jsonItem = service.getProductById("1"); //get product by id 1

        assertEquals(jsonItem.getId(), FIRST_PRODUCT_ID); // I compare the id on which I made the request to the database, so that I came and was wrapped in a class wrapper
    }

如何正确执行,以免在测试中配置连接?

最佳答案

Javalin将是模拟真实服务的绝佳工具,因为它允许在测试中进行状态断言。

Wiremock也可以使用。但这会导致难以维护行为测试(验证)。

关于java - 如何在HTTP客户端apache上编写测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54823608/

相关文章:

c - 使用 Check for C 单元测试时出现的问题

android - findFragmentByTag 的单元测试条件

Java Mockito 参数匹配器的无效使用

java - 如何从 Firestore 中的集合中检索所有文档?

java - 删除链表中大于运行时用户输入值的所有元素

java - 在类路径上找不到 javax.persistence.Persistence。假设非 JPA 2 环境。默认情况下,所有属性都是可遍历的。 Spring 启动A

java - java.util.Collections 中同步...方法的可用性

svn - 每次提交后运行单元测试的最佳方式? - svn - 每个功能的分支

NetBeans 平台单元测试库依赖项

visual-studio - 如何为 64 位平台运行 vstest.console.exe 进行单元测试