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

sta*_*alk 14 java events rcp junit multithreading

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

我正在使用eclipse Jobs来进行服务器调用.

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

djn*_*jna 10

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

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

  1. 线程管理代码:启动线程并可能等待结果的代码
  2. "worker"代码在线程中运行
  3. 多个线程处于活动状态时可能导致的并发问题

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

实现Worker代码,以便它可以单独运行.然后,您可以使用服务器的模拟单独对此进行单元测试.

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


Jon*_*han 6

这就是ConcurrentUnit的创建方式.一般用法是:

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

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