Не удалось запустить тест через ANT - PullRequest
2 голосов
/ 28 декабря 2011

У меня есть тестовый класс, все тесты этого класса работают нормально, если я запускаю в Eclipse. (щелкните правой кнопкой мыши по файлу, запустите от имени jUnit), но когда я пытаюсь запустить его с помощью Ant Script, происходит сбой

На самом деле этот тест должен выполняться на двух браузерах. Этот тест отлично работает с 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 Ответ

5 голосов
/ 28 декабря 2011

Возможно, ваш путь к классам содержит не только файлы .jar.

Задаче муравья "junit" нравятся только файлы .jar (или лучше сказать структура, похожая на путь , чтобы использовать термин Ant)) в элементе classpath.

Вы можете попытаться использовать

<include name="*.jar" />

вместо

<include name="*.*" />

в вашем наборе "project.classpath".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...