4.经验教训
虽然现在 STAF(STAX) 已经比较完善,但在实际使用的过程中,我们还是发现了一些问题。本节介绍这些问题以及解决或者避免这些问题的方法,使读者在碰到这些问题时能够及时的解决它们。
4.1 使用 STAFCMD 的 process 服务,不要使用 STAX 的 process 标签
为了编写 STAX 脚本方便,STAX 定义了 process 标签用来调用 STAF 中的进程(process)服务。但在使用过程中,发现 STAX 的 process 标签在某些情况下存在着一定的问题,其所调用的进程不能返回。 代码 11 的 STAX 脚本就是这样一个例子。
代码 11:process 标签不能返回
<process> <location>'linuxServer' </location> <command>'ls'</command> <parms>'-l'</parms></process> |
代码 11 调用 Linux 机器上的 ls 命令,并且传给 ls 命令 -l 参数。使用 STAXMonitor 执行此脚本,任务始终无法返回。因此推荐使用 stafcmd 标签直接调用 STAF 服务,如代码 12 所示。
代码 12:修改后的任务
<stafcmd> <location>'linuxServer'</location> <service>'process'</service> <request>'start command "ls" parms "-l" wait '</request></stafcmd> |
4.2 在 Windows 平台上不要使用 STDOUT 重定向输出
STAF 使用 STDOUT 来为启动的进程重定向输出,类似于>参数,比如 ls -l > ls.log。但在 Windows 平台使用中,我们发现使用 STDOUT 会带来一些问题。 如果调用的进程为批处理文件,并且此批处理文件中包含某些特定的功能,比如 xcopy,则 xcopy 将不会工作。另外一些检查目录和文件的命令也不能与 STDOUT 共存。 在 Linux 环境中并不存在这样的问题。因此,如果需要在 Windows 平台中使用重定向输出的功能时,建议使用>来重定向输出。
4.3 使用 STAXMonitor 监控任务的执行情况
对于 STAF 和 STAX 新手来说,尽可能使用 STAXMonitor 来监控 STAX 任务的执行情况。STAXMonitor 为我们提供了足够详细的信息,比如测试用例的执行结果,任务执行的消息,当前执行的命令。 使用 STAXMonitor 有助于我们对正在进行的任务进行分析并且监控其执行情况和结果。
STAXMonitor 在 STAX 安装文件中,可以用java -jar STAXMon.jar
来启动 STAXMonitor。STAXMonitor 的界面如图 3 所示。
图3. STAXMonitor 运行界面