【发布时间】:2011-09-03 15:44:07
【问题描述】:
我想在 JUnit 中编写 Selenium 测试用例并在多个浏览器中测试我的项目,我想利用所有 Selenium 驱动程序实现相同接口的事实。
每个测试用例应如下所示:
package fm;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import static org.junit.Assert.*;
public class HomepageTest {
@Test
public void testTitle(WebDriver driver) {
driver.get("http://localhost/");
assertEquals("Foo", driver.getTitle());
}
@Test
public void testSearchForm(WebDriver driver) {
//...
}
}
传递的 WebDriver 实现应该在某个地方集中控制。我可能需要重写一些 JUnit 行为,我希望这是可能的。
我想这样做是为了避免两件事:
- 代码重复:如果每个测试用例都会在@Before 中初始化所有测试过的浏览器,那么测试套件会有很多难以维护的重复代码。
- 测试套件的速度:如果我对订单进行集中控制并通过了 WebDriver 实现,我可以轻松地打开例如 Firefox,在其中运行所有测试用例,关闭它并打开下一个浏览器。如果每个测试用例都能够自行打开和关闭浏览器,那么每次测试运行都会增加大量时间。
有人知道我该怎么做吗?谢谢。
【问题讨论】: