我想在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,在其中运行所有测试用例,关闭它并打开下一个浏览器.如果每个测试用例都能够自行打开和关闭浏览器,那么每次测试运行都会增加很多时间.
有人知道我应该怎么做?谢谢.
解决方法
在Selenium项目中,我们使用
http://code.google.com/p/selenium/source/browse/trunk/java/client/test/org/openqa/selenium/AbstractDriverTestCase.java注入我们需要的东西,然后我们的构建调用浏览器,我们在其中运行测试.
看看我们的代码库,以获得一些灵感!