如何编写 JUnit 测试用例来测试线程和事件

新手上路,请多包涵

我有一个在一个(主)线程中工作的 java 代码。从主线程中,我生成了一个新线程,我在其中进行了服务器调用。服务器调用完成后,我在新线程中做一些工作,然后代码加入主线程。

我正在使用 Eclipse Jobs 进行服务器调用。

我想知道,如何为此编写 JUnit 测试用例。

原文由 stalwalk 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 536
2 个回答

您可能需要重构您的代码,以便可以轻松地对其进行测试。

我可以看到几个不同的测试区域:

  1. 线程管理代码:启动线程并可能等待结果的代码
  2. 在线程中运行的“worker”代码
  3. 多线程激活时可能导致的并发问题

构建您的实现,以便您的线程管理代码与 Worker 的详细信息无关。然后您可以使用 Mock Worker 来启用线程管理的测试——例如,一个以某些方式失败的 Mock Worker 允许您测试管理代码中的某些路径。

实现 Worker 代码,使其可以隔离运行。然后,您可以对服务器使用模拟来独立地对其进行单元测试。

对于并发测试,Abhijeet Kashnia 提供的链接会有所帮助。

原文由 djna 发布,翻译遵循 CC BY-SA 2.5 许可协议

这就是我创建 ConcurrentUnit 的目的。一般用法是:

  1. 产生一些线程
  2. 让主线程等待或睡眠
  3. 从工作线程中执行断言(通过 ConcurrentUnit 报告回主线程)
  4. 所有断言完成后,从其中一个工作线程恢复主线程

有关详细信息,请参阅 ConcurrentUnit 页面。

原文由 Jonathan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题