运行 测试涉及在 Junit Suite 中 运行 时执行数据库操作的后台线程挂起
Running tests involves background theads performing db operations hungs when running inside a Junit Suite
背景
我们正在使用 Jersey 的 Spring / Hibernate(基于 JPA)/ Restful API 构建产品。在项目构建阶段,我们正在 运行 宁集成测试以确保所有 Restful API 的行为都符合预期。
最近,我们迁移到使用两个实体管理器,用于与此合并的另一个子产品。事情从此开始变得一团糟
我们的后台线程很少执行异步操作。最初,我们遇到了这些后台作业获取各自实体管理器工厂的问题。但是我们使用 OpenEntityManagerInViewFilter.
在一定程度上解决了这个问题
作为集成测试的一部分 运行,我们将启动 Jetty 服务器并将应用程序部署到那里进行测试。
当前问题场景
当 运行 这些测试单独涉及后台处理 时, 它们 运行 没问题。
由于我们进行了多项测试,启动和停止 Jetty 服务器导致测试持续时间过长 运行.
所以我们将所有测试分组在一个测试套件中,并在 surefire-plugin 中配置了这个套件。
单独工作的测试开始挂在套件中 运行ning 下。
测试套件设置如下。
@BeforeClass
public static void setUp()
{
// Startup of jetty server happens here
}
@AfterClass
public static void tearDown()
{
// Stopping of jetty server happens here
}
在个别测试中,我们将在@BeforeClass 方法中完成后台进程并在@Afterclass 方法中执行数据清理活动。
当 运行在测试套件中
任何配置/想法将不胜感激。
我的猜测是其中之一:
- 你没有正确模拟某些东西,你正在改变你在测试中使用的数据的状态
- 您正在对数据库执行一些测试无法执行的操作 "repair"(例如删除或重命名 table)
- 您在某处使用了一些静态变量,这些变量正在为您构建一个您不使用的状态机expect/want
如果您能说出测试失败的原因,那可能会有所帮助
问题似乎是由于连接在使用后没有从连接池返回。一旦我们开始增加 maximum.connection.pool.size 问题就停止了。
感谢您的所有评论
背景
我们正在使用 Jersey 的 Spring / Hibernate(基于 JPA)/ Restful API 构建产品。在项目构建阶段,我们正在 运行 宁集成测试以确保所有 Restful API 的行为都符合预期。
最近,我们迁移到使用两个实体管理器,用于与此合并的另一个子产品。事情从此开始变得一团糟
我们的后台线程很少执行异步操作。最初,我们遇到了这些后台作业获取各自实体管理器工厂的问题。但是我们使用 OpenEntityManagerInViewFilter.
在一定程度上解决了这个问题作为集成测试的一部分 运行,我们将启动 Jetty 服务器并将应用程序部署到那里进行测试。
当前问题场景
当 运行 这些测试单独涉及后台处理 时, 它们 运行 没问题。
由于我们进行了多项测试,启动和停止 Jetty 服务器导致测试持续时间过长 运行.
所以我们将所有测试分组在一个测试套件中,并在 surefire-plugin 中配置了这个套件。
单独工作的测试开始挂在套件中 运行ning 下。 测试套件设置如下。
@BeforeClass
public static void setUp()
{
// Startup of jetty server happens here
}
@AfterClass
public static void tearDown()
{
// Stopping of jetty server happens here
}
在个别测试中,我们将在@BeforeClass 方法中完成后台进程并在@Afterclass 方法中执行数据清理活动。
当 运行在测试套件中
任何配置/想法将不胜感激。
我的猜测是其中之一:
- 你没有正确模拟某些东西,你正在改变你在测试中使用的数据的状态
- 您正在对数据库执行一些测试无法执行的操作 "repair"(例如删除或重命名 table)
- 您在某处使用了一些静态变量,这些变量正在为您构建一个您不使用的状态机expect/want
如果您能说出测试失败的原因,那可能会有所帮助
问题似乎是由于连接在使用后没有从连接池返回。一旦我们开始增加 maximum.connection.pool.size 问题就停止了。
感谢您的所有评论