为什么在testng.xml中以错误的顺序定义Ant运行的测试类?

时间:2011-11-21 09:16:57

标签: java ant testng

我得到了以下testng.xml和build.xml:

<suite name="My test suite" preserve-order="true">
 <parameter name="a" value="abcd"/>
 <parameter name="b" value="efgh"/>

<test name="testing">
<classes>
   <class name="test.First"/>
   <class name="test.Second">
    <methods>
        <exclude name="method1"/>
    </methods>
   </class>
   <class name="test.Third"/>
   <class name="test.Forth">
        <methods>
            <exclude name="method3"/>
        </methods>
   </class> 
   <class name="test.Fifth"/>
   <class name="test.Sixth"/>
</classes>

如果我在IDE中执行testng.xml,则按顺序调用类:First,Second,...,Sixth 但是,如果我使用ANT运行以下build.xml,则会以错误的顺序调用类:第六,第四,第五,第二,第三,第一。订单改变了。我认为使用TestNG这不应该发生吗?

的build.xml:

<project basedir="." default="build" name="Dummy">
<property environment="env"/>
<property name="ECLIPSE_HOME" value="MyEclipse"/>
<property name="debuglevel" value="source,lines,vars"/>
<property name="target" value="1.6"/>
<property name="source" value="1.6"/>
<path id="classpath">
    <pathelement location="bin"/>
    <pathelement location="../selenium-server-standalone-2.10.0.jar"/>
    <pathelement location="testng.jar"/>
</path>
<target name="init">
    <mkdir dir="bin"/>
    <copy includeemptydirs="false" todir="bin">
        <fileset dir="src">
            <exclude name="**/*.launch"/>
            <exclude name="**/*.java"/>
        </fileset>
    </copy>
</target>
<target name="clean">
    <delete dir="bin"/>
</target>
<target depends="clean" name="cleanall"/>
<target depends="init" name="build">
    <echo message="${ant.project.name}: ${ant.file}"/>
    <javac debug="true" debuglevel="${debuglevel}" destdir="bin" source="${source}" target="${target}" encoding="iso-8859-1">
        <src path="src"/>
        <classpath refid="classpath"/>
    </javac>
</target>
<taskdef name="testng"
      classname="org.testng.TestNGAntTask"
      classpathref="classpath"/>
<target name="test" depends="build">
    <echo message="running tests"/>
    <testng classpathref="classpath" outputdir="testng_output">
         <xmlfileset dir="bin" includes="testng.xml"/>
    </testng>
</target>

为什么订单错了?

我很感激帮助。

1 个答案:

答案 0 :(得分:2)

您可能正在使用两个不同版本的testng,一个包含在Eclipse插件中,另一个包含在类路径中。在preserve-order属性上有一个错误(http://code.google.com/p/testng/source/detail?r=966),可能是您在类路径中有错误的版本。尝试更新build.xml脚本引用的testng版本