2013-12-16 32 views
0

我使用了带有junit的硒webdriver。我在詹金斯用蚂蚁在IE中运行我的测试。我想以测试套件的形式运行多个测试。测试套件的第二项测试失败(浏览器未打开)

所以我创建的类的TestSuite:

@RunWith(Suite.class) 
@SuiteClasses({ Test1.class, Test2.class, 
    Test3.class }) 
public class TestSuite { 
} 

在build.xml文件我已经加入:

<target name="TestSuite"> 
    <mkdir dir="${dir}" /> 
    <junit fork="yes" printsummary="withOutAndErr"> 
     <formatter usefile="false" type="plain" /> 
     <formatter type="xml" /> 
     <batchtest todir="${dir}"> 
      <fileset dir="bin"> 
       <include name="**/TestSuite.class" /> 
      </fileset> 
     </batchtest> 
     <classpath refid="classpath" /> 
    </junit> 
</target> 

但后来我跑的测试套件,Test1的成功运行,Test2的失败,浏览器甚至没有启动。 我有方法之前和之后每次测试。在我清除缓存之前和在我运行之后:

driver.quit(); 
driver = null; 
killUnhandledProcess("IEDriverServer.exe"); 
killUnhandledProcess("iexplore.exe"); 

如何运行整个套件而不失败?

错误日志:

Testcase: test1 took 4,993 sec 
[junit]  Caused an ERROR 
[junit] Session ID is null 
[junit] Driver info: driver.version: RemoteWebDriver 
[junit] org.openqa.selenium.remote.SessionNotFoundException: Session ID is null 
[junit] Driver info: driver.version: RemoteWebDriver 
[junit]  at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:276) 
[junit]  at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:66) 
[junit]  at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:527) 
[junit]  at org.openqa.selenium.remote.RemoteWebDriver.get(RemoteWebDriver.java:276)... 

我有2个包 - 一个用于测试本身。每个测试都在单独的类中,并且所有这些分类都扩展了基类。在基类中,我有Before和After方法。第二个包包含页面对象的类。此包中的主类是主页,并在此页的webdriver被初始化:

protected WebDriver driver = DriverStart.getDriver(); 

驱动程序的实施是在单独的类(单)

回答

0

请尝试移动@After代码为@AfterClass方法,这样它应该在处理驱动程序对象之前运行所有方法。

您可能需要使用@After方法返回到您的应用需要一个主页/注销测试

+0

我试图做到这一点。没有帮助 – khris

+0

是否有一个原因,你必须做驱动程序= null部分&杀死进程(我假设与其他第三方进程,而不是WebDriver)?是.quit()不够? –

+0

我改变了这个部分:driver.quit(); driver = null; killUnhandledProcess(“IEDriverServer.exe”); killUnhandledProcess(“iexplore.exe”);只是driver.close();.仍然不起作用。 IE在第一次测试结束后关闭,并且不会再次监听 – khris