这是一个有趣的。
我有一个在 tomcat 下运行并具有 servlet 访问权限的应用程序。底层实现使用ThreadPoolExecutor来分割任务,此时只是一个电子邮件分发器。我一直在添加 JUnit 测试,慢慢地将 cobertura 报告的代码覆盖率提高到几乎可以接受的水平。 有关 JUnit 测试的一些背景:
- 在@BeforeClass中,我正在设置在测试环境中有效的数据库连接查找上下文。
- 在 Servlet 测试中,我使用 HttpUnit 获取 InitationContext,然后获取 servlet 的实例。
- 然后,我调用 servlet 中完成所有工作的主要方法,并最终调用线程管理器以获取适当的分配方法,并使用之前定义的 ThreadPool。
- 问题发生在生成的线程中。使用 @BeforeClass 中创建的上下文设置,来自 servlet 的数据库访问工作得很好。线程无权访问该上下文,并且无法获取数据库连接信息,从而导致线程代码失败。
所以,底线是,有人知道如何测试需要数据库访问的线程代码吗?或者甚至是一种全新的单元测试方法,可以与需要数据库访问的多线程应用程序一起使用。
可以在某一点上提供任何其他详细信息。我希望我已经提供了足够的信息,不需要提供实际的代码。
最佳答案
我建议扩展发送到线程池的任务并将数据库上下文添加到扩展任务中,然后在您编写的新测试中获取上下文并使用它来访问数据库。 我希望它能回答您的问题,如果没有,请添加一些代码示例,以便我能够测试它。
关于java - Junit 测试具有数据库访问的多线程应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14656249/