【发布时间】:2019-01-28 15:22:53
【问题描述】:
从 jMock 2.6 开始,我可以通过
确保多个线程一致地看到我的模拟对象final Mockery mockery = new Mockery();
mockery.setThreadingPolicy(new Synchroniser());
使用 jMock 2.5 时,我有哪些选择(我遇到间歇性测试“片状”)?
特别是,使用synchronized 包装所有模拟对象方法调用是否足够(更新:不,不适合期望)?
<T> T synchronizedMock(final T mock,
final Class<T> clazz) {
return (T) Proxy.newProxyInstance(Thread.currentThread().getContextClassLoader(),
new Class[] {clazz, CaptureControl.class},
(proxy, method, args) -> {
synchronized (mock) {
return method.invoke(mock, args);
}
});
}
当使用上述方法时,我遇到任何死锁的机会有多大?
【问题讨论】:
标签: java multithreading unit-testing concurrency jmock