通过ant调用TestNg / Selenium总是返回在类路径中找不到类

时间:2014-02-06 19:48:21

标签: ant testng selenium-rc

我对这个设置很新。并且有问题通过ant。使用TestNG调用我的项目。

我可以在Eclipse中运行testng.xml而没有任何问题,但我总是收到无法通过ant在classpath中找到类。

在build.xml

<project basedir="." default="runTest" name="Ant file for TestNG">

<property name="src" location="src" />
<property name="bin" location="bin" />
<property name="telus" location="C:\ESP_Testware\ESP_Projects\Selenium\telus-pharma-integration-tests\src\test\resources\suite\local" />
<property name="libs" location="lib" />

<path id="class.path">
     <pathelement location="${libs}/testng-6.4.jar" />
     <pathelement location="${libs}/selenium-java-client-driver.jar" />
     <pathelement location="${libs}/selenium-server-standalone-2.39.0.jar" />
     <pathelement location="${bin}"/>
     <pathelement location="${telus}"/>

     </path>

<taskdef name="testng" classname="org.testng.TestNGAntTask">
<classpath>
<pathelement location="${libs}/testng-6.4.jar"/>
</classpath>
</taskdef>

<target name="runTest">

     <echo message="mkdir"/>

 <mkdir dir="testng_output"/><!-- Create the output directory. -->
     <echo message= "TestNg Start"/>
  <testng outputdir="testng_output" classpathref="class.path"> 
     <xmlfileset dir="${telus}" includes="testng.xml"/> 
    <!--    <xmlfileset dir="." includes="TestNG2.xml"/> -->
   </testng>

</target>
 </project> 

的testng.xml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Bolt harness QA" verbose="1">
    <parameter name="test.env" value="qa" />
    <parameter name="selenium.url" value="https://www.google.com" />
    <!-- Valid values for browser: FF, IE, Chrome -->
    <parameter name="selenium.browser" value="Chrome" />

    <listeners>
        <listener class-name="com.gdo.test.integration.listener.SoftAssertTestListener" />
    </listeners>

    <test name="Test_MS_Website" preserve-order="true">
        <classes>

            <class name="com.gdo.telus.SC006">
                <methods>
                    <include name="Web_InvalidPassword" />
                    <exclude name="Web_LockedAccount" />
                </methods>
            </class>

        </classes>
    </test>
</suite>

我的班级走这条道路:

C:\ ESP_Testware \ ESP_Projects \硒\ TELUS-制药集成的测试\ SRC \测试\ java中\ COM \ GDO \ TELUS

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

尝试我的build.xml文件,我确实将ReportNG插件添加到此build.xml文件中,以生成更好看的报告,而不是默认的TestNG报告。您可以下载ReportNG的jar文件并将其放入您的lib文件夹中,它仍然可以正常工作:

<project name="Some Bullshit Goes Here" default="clean" basedir=".">

    <!-- Initilization properties -->
        <!-- <property name="lib.dir" value="${basedir}/lib"/> -->

<!-- using the ${basedir} allows you to use relative paths. It will use the working directory and add folders that you specify -->

    <property name="build.dir" value="${basedir}/build"/>
    <property name="lib.dir" value="hardcoded value can go here"/>
    <property name="src.dir" value="${basedir}/src"/>
    <property name="bin.dir" value="${basedir}/bin"/>
    <property name="output.dir" value="${basedir}/output"/>


<!-- I chose to hardcode the location where my jar library files will be, it will be used for compilation. Again you can set relative path if you wish.-->
<path id="assloadoflibs">
    <fileset dir="/automated/tests/library">
        <include name="*.jar"/>
    </fileset>
    <pathelement path="${basedir}/bin"/>
</path>

    <!-- setting libraries -->
    <target name="setClassPath">
        <path id="classpath_jars">
            <pathelement path="${basedir}/"/>
        <fileset dir="/automated/tests/library" includes="*.jar"/>
        </path>

    <!-- Convert jar collection from a given reference into one list, storing the result into a given property, separated by colon -->

    <pathconvert pathsep=":" property="test.classpath" refid="classpath_jars"/>
</target>


<target name="loadTestNG" depends="setClassPath"> 
<!-- Creating task definition for TestNG task -->
    <taskdef resource="testngtasks" classpath="${test.classpath}"/> 

    </target>  

    <target name="init">
    <!-- Creating build directory structure used by compile -->
        <mkdir dir="${build.dir}"/>
    </target>

    <target name="clean">
        <echo message="deleting existing build directory"/>
        <delete dir="${build.dir}"/>
    </target>

    <!-- In compile target dependency is given over clean target followed by init,
    this order makes sure that build directory gets created before compile takes place
    This is how a clean complile is achieved.
    -->

    <target name="compile" depends="clean,init,setClassPath,loadTestNG">
        <echo message="classpath:${test.classpath}"/>
        <echo message="compiling..."/>
        <javac destdir="${build.dir}" srcdir="${src.dir}" classpath="${test.classpath}"/>


    </target>

    <target name="run" depends="compile">

        <!-- testng classpath has been provided reference of jar files and compiled classes
        this will generate report NG report.
        -->

    <testng classpath="${test.classpath}:${build.dir}" outputdir="${basedir}/output" haltonfailure="false" useDefaultListeners="true" listeners="org.uncommons.reportng.HTMLReporter,org.uncommons.reportng.JUnitXMLReporter" classpathref="reportnglibs">
<xmlfileset dir="${basedir}" includes="testng.xml"/>

<!-- This value here will show the title of the report --> 
<sysproperty key="org.uncommons.reportng.title" value="Example Test Report"/>
        </testng>
    </target>
</project>

这是我的TestNG.xml文件:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">

<suite name="Example Test Suite">

<test name ="Example TestCase Name">
    <classes>
        <class name="packageName.JavaFilename"></class>
    </classes>
</test>
</suite>

答案 1 :(得分:0)

我在这个网站上找到了答案。我需要使用maven来调用我的解决方案。

http://rationaleemotions.wordpress.com/2012/05/14/continuous-integration-with-selenium/

但是还是感谢你的帮助