我正在通过junit运行selenium测试。 在我的系统中,AbstractSeleniumTestCase类的setUp方法设置了selenium web驱动程序和firefox配置文件,tearDown方法从系统中注销并关闭了selenium。
有些测试会覆盖setUp和tearDown方法来执行自定义测试setUp和tearDown。
我遇到的问题是,如果在测试的startUp方法中出现错误(如意外的弹出窗口或selenium异常),那么Web浏览器永远不会关闭,并且永远不会执行特定于测试的tearDown操作。 / p>
答案 0 :(得分:0)
您可以使用try
方法中的setUp()
块在遇到错误后运行tearDown()
,并将测试设置的“肉”移到另一种方法中:
public void setUp() throws Exception {
try {
mySetUp();
} catch (Exception e) {
tearDown();
throw e;
}
}
然后,在您的子类中,覆盖mySetUp()
而不是setUp()
。
答案 1 :(得分:0)
根据文档:
,您应该实现TestWatcher并覆盖已完成的方法在测试方法完成时调用(无论是通过还是失败)
我暂时没有使用过JUnit,但是我记得,@Before
之前已经应用了规则。
此外,您可以在覆盖启动方法时启动驱动程序,并通过覆盖失败的方法等来采取任何相关操作。通过这种方式,可以在@Before
和@After
上删除重复的内容。查看文档以了解具体信息。
然后,您可以使用@Rule
或@ClassRule
注释您的测试类,谷歌了解哪个更适合您的需求。为了满足您的任何特定需求,还可以创建rule chain。