问候,
我已经使用 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 的停止按钮),我尝试触发的 overnightTests.jar 应用程序就会启动。每次我运行应用程序时都会发生这种情况。就好像该工具没有启动 overnight_tests.jar 而被放置在队列中以“下一个”启动。我试过分配 'Runtime.getRuntime().exec(commands);'到 Process 变量并在 Process 上执行 wait() ,我尝试完全忽略返回。结果总是一样的。
我的问题是:
- 我的代码缺少什么可以让它在单独的进程中启动 overnightTests.jar 并忘记它,让 Selenium 继续它的快乐并做它的事情?
- 对于以前遇到过此问题的任何人,是否有更简单、更清晰、更简单的解决方案?我对触发信号的格式及其发送和接收方式有很大的控制权,我的主要要求是解决方案要稳健。任何可行且不过分复杂或复杂的东西都值得一试。
任何帮助或建议都会让我非常高兴,并使我更有可能完成这个项目并在月底去度假。
最佳答案
一些建议:
- 如果可以,请使用 Ant,我发现它对于调用 Java 进程非常可靠,并且您可以控制诸如“spawn”和“fork”之类的东西(搜索“ant java task”以获取更多详细信息)。你可以在这里找到一个例子,看看“jmeter-cycle-heapdump”目标(第 159 行),也看看 Ant“并行”/“顺序”元素的用法,我想这会给你一些想法您正在尝试的测试自动化 :) -- http://code.google.com/p/perfbench/source/browse/trunk/perfbench/build.xml
- 我会尝试将所有这些命令放入一个普通的批处理文件中并尝试以某种方式调用它,这可能更简单,而且您不必担心一个 java 进程调用另一个 java 进程,这似乎是问题所在
关于java - 在 Windows XP 上自动启动 Selenium RC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1268741/