测试完成后,DropwizardAppRule ClassRule不释放连接

时间:2019-04-03 21:38:09

标签: java junit jersey dropwizard

我对使用Dropwizard用Java编写的RESTful应用程序进行了一些集成测试。测试套件运行良好,直到最终挂起,并且出现C3P0PooledConnectionPoolManager异常:java.sql.SQLNonTransientConnectionException: Too many connections

我确定在使用C3P0Registry.getPooledDataSources()进行每次测试后都没有清除连接,但是我误诊了该问题,原因是未关闭我的球衣响应实体,详情如下:https://jersey.github.io/documentation/latest/client.html#d0e5255

许多测试仅在检查状态码,所以对我来说这将是有道理的(在链接中指出:“如果您不阅读实体,则需要关闭响应response.close()“手动)。但是,解决此问题并确保关闭每个实体后,我仍然在测试之间保持持久连接。

我将DropwizardAppRule用作类规则,并在每次测试运行的开始和结束创建之后,可以调用关闭与该规则关联的客户端,但是连接保持打开状态。我的C3P0ConnectionPool在每个运行的测试类中获得3个连接,而我想不出一种方法来阻止它随着添加的每个新类的增长而增长。

ClassRule代码段:

    @ClassRule
    public static final DropwizardAppRule<MicroServiceCoreConfiguration> RULE =
            new DropwizardAppRule<>(App.class, ResourceHelpers.resourceFilePath("./config.yml"));

将使用请求的任何信息进行更新!

0 个答案:

没有答案