2014-05-15 109 views
0

我想知道一段时间什么最好的方法是在引发异常或测试用例完成后进行适当的清理。WebDriver正确关闭

提醒: 根据执行程序的一个.exe进程驱动程序进程,conhost.exe,浏览器和Java应用程序都启动了。

使用driver.quit(),我们可以在完成测试用例后终止驱动程序进程,conhost和浏览器。

WebDriver driver = new SomethingDriver(); 

// do stuff 

driver.quit(); // Proper cleaning 

但是,如果一个可能会引发异常,我们需要这样做:

try{ 
     WebDriver driver = new SomethingDriver(); 

     // do stuff 
    } 
catch(Exception e){ 
e.printStackTrace(); 
}   
    finally{ 
     driver.quit(); // Proper cleaning 
    } 

怎么样关闭驱动程序和conhost,但留下的浏览器还活着吗?执行shell脚本是坏的,因为它杀死所有进程具有这些名称(从而防止并发使用),它是仅适用于Windows(我认为):

TASKKILL /F /IM chromedriver.exe 
TASKKILL /F /IM conhost.exe 

比方说,我们随机杀死Java进程(以Eclipse或任务管理器)。我们怎样才能确保上述清洁发生?

是否有一个很好地覆盖所有这些问题的代码解决方案?

回答

0

使用JUnit可以帮助

public class JunitTest1 { 

    private WebDriver driver; 

    @BeforeClass 
    public static void oneTimeSetUp() { 
     // one-time initialization code 
     System.out.println("@BeforeClass - oneTimeSetUp"); 
    } 

    @AfterClass 
    public static void oneTimeTearDown() { 
     // one-time cleanup code 
     System.out.println("@AfterClass - oneTimeTearDown"); 
    } 

    @Before 
    public void setUp() { 
     // before every test 
     driver = new FirefoxDriver(); 
     System.out.println("@Before - setUp"); 
    } 

    @After 
    public void tearDown() { 
     // after every test 
     driver.quit(); 
     System.out.println("@After - tearDown"); 
    } 

    @Test 
    public void testSmthOne() { 
     // the test itself 
     System.out.println("@Test - testSmth"); 
    } 

    @Test 
    public void testSmthTwo() { 
     // the test itself 
     System.out.println("@Test - testSmth"); 
    } 
}