这是一个有趣的。
我有一个在 Tomcat 下运行并具有 servlet 访问权限的应用程序。底层实现使用ThreadPoolExecutor来细分任务,此时只是一个电子邮件分发器。我一直在添加 JUnit 测试,慢慢地将 cobertura 报告的代码覆盖率提高到几乎可以接受的水平。JUnit 测试的一些背景知识:
- 在@BeforeClass 中,我正在为在测试环境中有效的数据库连接查找设置上下文。
- 在 Servlet 测试中,我使用HttpUnit来获取InvocationContext,然后是 servlet 的实例。
- 然后,我调用 servlet 中完成所有工作的主要方法,并最终调用线程管理器以获取适当的分发方法,并使用前面定义的 ThreadPool。
- 问题发生在生成的线程中。使用@BeforeClass中创建的上下文设置,来自 servlet 的 DB 访问工作得很好。线程无权访问该上下文,并且无法获取数据库连接信息,从而导致线程代码失败。
所以,最重要的是,任何人都知道如何测试需要数据库访问的线程代码?甚至是一种全新的单元测试方法,可以与需要数据库访问的多线程应用程序一起使用。
任何额外的细节都可以提供给一个点。我希望我已经提供了足够的信息,不需要提供实际代码。