使用Junit测试具有数据库访问功能的多线程应用程序

14 浏览
0 Comments

使用Junit测试具有数据库访问功能的多线程应用程序

这个问题已经有答案

如何进行多线程代码的单元测试?

这里有一个有趣的问题。

我有一个应用程序在tomcat下运行,可以访问servlet。底层实现使用ThreadPoolExecutor来细分任务,目前仅是电子邮件分发器。我一直在添加JUnit测试,慢慢地将由cobertura报告的代码覆盖率提高到一个几乎可接受的水平。

以下内容为关于JUnit测试的背景介绍:

  1. 在@BeforeClass中,我设置了在测试环境中有效的用于DB连接查找的上下文。
  2. 在Servlet测试中,我使用HttpUnit来获取一个InvocationContext,然后获取一个servlet实例。
  3. 接下来,我调用servlet中的主要方法,该方法执行所有工作,并最终调用线程管理器以进行适当的分发方法,并使用前面定义的线程池。
  4. 问题出现在生成的线程中。来自servlet的DB访问使用在@BeforeClass中设置的上下文完全正常。但是线程无法访问该上下文,并且无法获取DB连接信息,导致线程代码失败。

因此,总之,有人有想法如何测试要访问DB的Thread代码吗?或者即使是想要访问DB的多线程应用程序的全新单元测试方法。

可以提供到某个程度的其他细节。我希望我已经提供了足够的信息,不需要提供实际的代码。

admin 更改状态以发布 2023年5月23日
0
0 Comments

我建议扩展发送到线程池的任务,并将DB上下文添加到扩展任务中,然后在您编写的新测试中获取上下文并用于访问数据库。

我希望这回答了您的问题,如果没有,请添加一些代码示例,以便我能够测试。

0