我经常需要等待一些异步进程在我的devKit连接器中完成(然后导致isConnected返回true)
@ValidateConnection
public boolean isConnected() {
return isConnected;
}
如何让功能单元测试等到完成后再进行。我原本以为单元测试会等到我的流程中的所有连接器都“连接”。
Atm我正在单元测试中使用sleep来绕过我的FunctionalTestCase
Thread.sleep(5000);
assertEquals(1, targetEngineApplication.getNumberOfMessagesReveived());
Edit_的 _ __ _ __ _ __ _ __ _ __ _ ____
连接代码:
@Connect
public void connectMethod(final String configFileLocation) throws ConnectionException {
System.out.println("Connect called with config:" + configFileLocation);
try {
Engine.doInitialise(configFileLocation);
Engine.doStart();
} catch (InitialisationException e) {
throw new ConnectionException(ConnectionExceptionCode.UNKNOWN, "0", e.getCause().getMessage(), e);
} catch (StartingException e) {
throw new ConnectionException(ConnectionExceptionCode.UNKNOWN, "0", e.getCause().getMessage(), e);
}
// this will also tell the unit tests to start
isConnected = true;
}
答案 0 :(得分:2)
情况就是:当功能测试开始时,需要初始化和启动的所有内容都是。
DevKit连接器的“已连接”概念不同:使用消息处理器时,按需连接。
那么你想在测试中等待什么:连接器的初始化序列已经完成或者某个处理器方法已被执行了?
为了记录,Mule in Action的第12章介绍了允许处理异步场景的测试技术。