【发布时间】:2010-11-19 02:49:47
【问题描述】:
您好,
我已经使用 Selenium RC 和 Java 完成了一套测试的开发,我正在尝试将它们与构建系统集成,以便我可以在一夜之间运行测试。流程是这样运行的:
- Cruisecontrol 进行完整构建
- Cruisecontrol 服务器上的 cron 作业将构建安装在特定的测试集群上。
- 构建安装完成后,网页会更新安装结果(通过/失败)。
- 在客户端计算机 (Windows XP) 上运行的应用程序 (trigger.jar) 将监视网页。当它检测到安装成功时,它将启动 Selenium 测试:
java -jar overnightTests.jar。 - 触发器应用程序没有必要进行任何日志记录或捕获测试套件的退出代码。所有这些东西都由测试套件处理。
我已经写了所有的片段,但是触发器给我带来了麻烦。
这是我的代码:
try {
String cmd = "java";
String jArg = "-jar";
String program = "overnightTests.jar";
String aptUrl = "https://apt.qa6.spockmate.com/apt/" ;
String campaignManagerURL = "http://app01.dev02.sn.spockmate.com:8080/cm/" ;
String contractDatafile = "C:\\testdata\\MasterDataForSelenium.xls" ;
String adMapDataDir = "C:\\testdata\\AdMaps\\" ;
String creativeAssetsFile = "C:\\testdata\\CreativeAssets\\CreativeAssetsForSeleniumTests.csv";
String adminURL = "https://admin.qa6.spockmate.com/admin/";
String [] commands = new String[]{cmd, jArg, program, aptUrl, campaignManagerURL, contractDatafile, adMapDataDir, creativeAssetsFile, adminURL};
Process child = Runtime.getRuntime().exec(commands);
} catch (IOException e) {
System.out.println("Exception thrown while calling Runtime:");
System.out.println(e.getCause());
e.printStackTrace();
}
当“Runtime.getRuntime().exec(commands)”行执行时,trigger.jar 挂起。无论我是从 DOS 命令行还是从 Eclipse 运行应用程序都没有关系。这是奇怪的部分:一旦我终止了 trigger.jar 应用程序(通过 ctrl-c 或 Eclipse 的停止按钮),我试图触发的 nightTests.jar 应用程序就会启动。每次我运行应用程序时都会发生这种情况。就好像不是启动 night_tests.jar 而是将工具放入队列中以“下一个”启动。我试过分配'Runtime.getRuntime().exec(commands);'到 Process 变量并在 Process 上执行 wait() ,我尝试完全忽略返回。结果总是一样的。
我的问题是:
- 我的代码缺少什么,可以让它在一个单独的进程中启动 nightTests.jar 并忘记它,让 Selenium 继续它的快乐方式并做它的事情?
- 对于以前遇到过此问题的任何人,是否有更简单、更清洁、更简单的解决方案?我对触发信号的格式以及它的发送和接收方式有很大的控制权,我的主要要求是解决方案是健壮的。任何行之有效且不过分繁琐或复杂的事情都值得一试。
任何帮助或建议都会让我非常高兴,并且更有可能完成这个项目并在月底去度假。
【问题讨论】:
标签: java automation selenium build-automation automated-tests