到目前为止,我已经避免了测试多线程代码的噩梦,因为它看起来像是一个雷区太多了.我想问一下人们如何测试依赖线程成功执行的代码,或者人们如何测试那些只在两个线程以给定方式交互时出现的问题?
对于今天的程序员来说,这似乎是一个非常关键的问题,将我们的知识集中在这个imho上是有用的.
我有一个在一个(主)线程中工作的java代码.从主线程,我产生一个新的线程,我在其中进行服务器调用.服务器调用完成后,我在新线程中做了一些工作,然后代码加入主线程.
我正在使用eclipse Jobs来进行服务器调用.
我想知道,我如何为此编写JUnit测试用例.
我正在编写测试用例来测试对象行为.
当对象被实例化时,它必须允许调用方法,只有在500毫秒内调用它时才调用call(),否则它必须抛出异常.
我设计了这样的Junit测试用例:
@Test(expected = IllegalStateException.class)
public void testCallAfterTimeout() {
MyObject o= new MyObject();
//To ensure the timeout is occurred
Thread.sleep(1000);
o.call();
}
Run Code Online (Sandbox Code Playgroud)
你认为这是一种好习惯还是我应该采用另一种方法?
非常感谢