我在机器人框架中重写java测试用例时遇到了麻烦。
为了做到这一点,我需要创建新的java关键字,但实现测试的方式,不要轻松!
这是我需要在RF中重写的脚本示例:
try
{
ServerSocket server = Utils.startSocketServer;
while(true)
{
Socket socket = server.accept();
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
RequestX request = (RequestX) ois.readObject();
if(request.getSource().equals(String.INFO)
{
/** do something **/
}
else if(request.getSource().equals(String.X)
{
/** do something **/
}
else
{
/** do something **/
}
/** break on condition **/
}
Utils.closeSocketServer(server);
}catch(Exception e)
{
/** do something **/
}
关于我如何将其变成RF测试案例的任何建议!
将整个脚本变成单个关键字不是一个选项,因为在该循环中的某个地方,在执行注释时,我还需要调用关键字。
主要的想法是将此脚本分解为函数,以便我可以将它们用作RF中的java关键字,但我仍然无法理解这一点!
答案 0 :(得分:0)
所以,我做了进一步的研究,这就是我提出的:
将此代码拆分为函数,以便我可以在机器人框架中调用它们并将其用作关键字。 所以代码就像这样:
public static String SendTask(String taskFile)
{
ServerSocket server = null;
try
{
server = startSocketServer();
if (taskFile != null)
{
Utils.sendJMSWakeUp();
while(true)
{
Socket socket = server.accept();
ObjectInputStream ois = getInputStream(socket);
RequestX request = (cast)ois.readObject();
if (getSource(request,Strings.INFO)
{
/** log info **/
}
/** if the current jms queue is Scheduler then send task !*/
else if (getSource(request,Strings.SCHEDULER))
{
/** send task **/
break;
}
}
}
else
{
assertion(false, "Illegal Argument Value null");
}
}catch (Exception e)
{
/** log errors **/
}finally
{
/** close socket server & return a task id **/
}
}
我正在收听的每个JMS队列都是如此
public static String getTaskAck(String taskId);
public static String getTaskresult(String taskId);
它确实适用于我的同步任务执行。但这对异步任务执行非常不方便。因为每次我都要等待关键字的响应,所以下一个关键字可能会失败,因为他应该读取的响应已经发送了!
我可以查看用于并行关键字执行的进程BuiltIn库或RobotFramework-Async库,但是对于许多异步jms消息来说,它将更难处理。
经过进一步调查,我想我会研究一下robotframework-jmsLibrary。必须像添加activeMq一样进行一些开发增强。 这样,我可以通过activeMq发送和使用许多异步消息,然后通过robotframework-jmsLibrary处理每条消息 示例: RF-jmsLibrary< ==>同步< ==> activeMq< ==>异步< ==>系统