2011-12-28 8 views
2

私はテストクラスを持っています。私がEclipseで実行すると、このクラスのテストはすべて正常に動作します。 (ファイルを右クリックしてjUnitとして実行)、Antスクリプトを使用して実行しようとすると失敗します。ANTを通じてテストを実行できません

実際には、このテストは2つのブラウザに対して実行されます。このテストはIE Chromeに対してうまく動作します。それはIEに対して正常に動作します。しかし、テストはChromeに対して実行できません。私は何が起こっているのか分かりません。 私がプロジェクトパスのallresources/drivers /に置いたすべてのドライバ関連情報。そして私はブラウザプロファイルをプロジェクトのbrowserProfilesフォルダの下に置いています。

なぜChromeでテストを開始できないのかわかりません。

ソースコードにwebdriverとseldriverを作成しようとしている場所にテストコードとコードを添付しました。

package com.mytests; 

public class MyParamTest { 
private MyWrapperForBrowser browser; 

@Before 
public void setup(){ 
    b = new MyWrapperForBrowser("chrome"); 
    b.start(); 
} 

@Test 
public void testCURDOnEntity() { 
    MyEntity e = new MyEntity(browser); 
    Assert.assertTrue(e.createMessage("message", "text")); 
    // more business logic.. 
} 
} 

とソースコード

package com.mysrc; 

import java.util.*; 
import org.openqa.selenium.*; 

public class MyWrapperForBrowser { 

    private final WebDriver webDriver; 
    private WebDriverBackedSelenium selDriver; 


public MyWrapperForBrowser(String driver) { 
     if (driver.equalsIgnoreCase("IE") 
     { 
      // create webDriver , selDriver 
     } 
     else{ 

     System.setProperty("webdriver.chrome.driver", 
        "allresources/drivers/chromedriver.exe"); 
     DesiredCapabilities broserCapabilities = DesiredCapabilities.chrome(); 
     broserCapabilities.setCapability("chrome.switches", Arrays.asList("--start-minimized")); 
     String url = this.getClass().getClassLoader().getResource("browserProfiles/ChromeProfile").getPath() 
       .substring(1); 
     broserCapabilities.setCapability("chrome.switches", 
       Arrays.asList("--user-data-dir=" + url)); 
     webDriver = new ChromeDriver(broserCapabilities); 
     selDriver = new WebDriverBackedSelenium(webDriver, ""); 
} 
} 

public void start() { 
    webDriver.get(getURL()); 
    selDriver.windowMaximize(); 
} 
} 

ANTビルドを実行している間、私は取得していますスタックトレースは次のとおりです。ここで

[junit] java.util.zip.ZipException: error in opening zip file 
[junit]  at java.util.zip.ZipFile.open(Native Method) 
[junit]  at java.util.zip.ZipFile.<init>(ZipFile.java:114) 
[junit]  at java.util.zip.ZipFile.<init>(ZipFile.java:131) 
[junit]  at org.apache.tools.ant.AntClassLoader.getResourceURL(AntClassLoader.java:1028) 
[junit]  at org.apache.tools.ant.AntClassLoader$ResourceEnumeration.findNextResource(AntClassLoader.java:147) 
[junit]  at org.apache.tools.ant.AntClassLoader$ResourceEnumeration.<init> 

は、ビルドスクリプトです:

<project name="MyProject" default="build-proj" basedir="."> 

    <property file="./build.properties" /> 

    <path id="project.classpath"> 
     <fileset dir="resources/drivers"> 
      <include name="*.*" /> 
     </fileset>  
    </path> 

    <taskdef resource="emma_ant.properties"> 
     <classpath> 
      <pathelement path="${lib.dir}/emma_ant-2.1.5320.jar" /> 
      <pathelement path="${lib.dir}/emma-2.1.5320.jar" /> 
     </classpath> 
    </taskdef> 

    <target name="build-proj"> 
     <antcall target="cleanup" /> 
     <antcall target="compile" /> 
     <antcall target="test" /> 
    </target> 

    <target name="cleanup" description="clean up"> 
     <delete dir="${build.dir}" /> 
     <delete dir="${dist.dir}" /> 
     <delete dir="${test.report.dir}" /> 
     <mkdir dir="${build.dir}" /> 
     <mkdir dir="${build.src.dir}" /> 
     <mkdir dir="${build.test.dir}" /> 
    </target> 

    <target name="compile" description="compiling all the code"> 
     <javac srcdir="${src.dir}" destdir="${build.src.dir}" debug="true"> 
      <classpath> 
       <path refid="project.classpath" /> 
      </classpath> 
     </javac> 
     <javac srcdir="${test.dir}" destdir="${build.test.dir}" debug="true"> 
      <classpath> 
       <path refid="project.classpath" /> 
       <path path="${build.src.dir}" /> 
      </classpath> 
     </javac> 
    </target> 

    <target name="test"> 
     <junit haltonfailure="false" printsummary="true" fork="true" forkmode="once" > 
      <classpath> 
       <pathelement path="${src.dir}" /> 
       <pathelement path="${build.src.dir}" /> 
       <pathelement path="${build.test.dir}" /> 
       <pathelement path="${test.data.dir}" /> 
       <path refid="project.classpath" /> 
      </classpath> 

      <formatter type="xml"/> 
      <batchtest todir="${test.report.dir}"> 
       <fileset dir="${build.test.dir}"> 
        <include name="**/*Test.class" /> 
       </fileset> 
      </batchtest> 
     </junit> 
    </target> 
</project> 
+1

ANTビルドファイルを表示していないときにANTエラーのヘルプがどのように表示されるか分かりません。このエラーは、ZIPファイルを開く際に問題が発生していることを示していますが、情報が不足しているだけです。 – SteveD

+0

@SteveD申し訳ありませんが、私はそれを逃した。私はbuildscriptでQを更新しました。 –

答えて

5

あなたのクラスパスにoが含まれていない可能性がありますnly .jarファイル。

antタスク "junit"は、classpath要素で.jarファイルのみが好きです(または、Antの用語を使用すると良いでしょう)。

あなたはあなたの "project.classpath" -filesetで

<include name="*.jar" /> 

代わりの

<include name="*.*" /> 

を使用することを試みることができます。

+0

まあ私もこれを試してみました。テストを実行するためのビルドの一部としてすべてのドライバ情報を保持したいので、*。*を保持しました。コンソールでチェックしたとき、E:\ myProject \ allResources \ drivers \ chromedriver.exe:java.util.zip.ZipException:zipファイルを開く際にエラーが発生しました。 –

+1

Aah、Antバージョンを1.8.xにアップデートしたのが分かりますよね? [この問題](https://issues.apache.org/bugzilla/show_bug.cgi?id=47593)が修正され、エラーの原因となっているファイルの名前が表示されます。そして、この.exeファイルはまさに問題です。これはjarファイルではなく、zipファイルではなくディレクトリなので、Antのような構造体ではありません。そのため、このエラーが発生します。 – Mayoares