我有一个用于 Web 测试的应用程序(基于 Selenium,但这在这里应该无关紧要),它连续执行了相当多的测试用例。完成需要几个小时,并且测试用例的数量会增加,所以我想使用多个 Web 浏览器实例来并行执行多个测试用例。测试用例之间没有依赖关系。
非常简化它看起来像这样:
TestExecutor executor = new TestExecutor(new FirefoxDriver());
for (TestCase test: tests) {
executor.execute(test);
// use results here
}
现在我不知道如何并行化它。我可以轻松地创建几个连接到多个 Web 浏览器的 TestExecutor 作为 Callables,并使用 Executors、CompletitionServices 和其他不错的帮助类,但我该怎么做:
一旦准备好之前的TestCase,将新的TestCase 传递给TestExecutor?Callable 中的 call() 方法不接受任何参数,因此我可能必须在我的 TestExecutor 类中实现一些 setNextTestCase() 来实现这一点,我觉得这不是很好。有没有更好的选择?
重用 TestExecutor 实例来执行下一个测试用例?由于每个 TestExecutor 实例都需要一个 Web 浏览器实例,因此初始化它需要很长时间,并且如果我为每个测试用例创建一个新的 TestExecutor 会导致许多窗口在屏幕上闪烁。