2011-08-25 193 views
15

我跑硒单元测试TestNG中与蚂蚁Java的任务,像这样:Ant中的<pathelement>属性'路径'和'位置'有什么区别?

<java classpathref="runtime.classpath" 
    classname="org.testng.TestNG" 
    failonerror="false"> 
    <arg value="-d" /> 
    <arg value="${grid.location}/target/reports" /> 
    <arg value="${lib.location}/testng.xml"/> 
</java> 

runtime.classpath是pathlike结构,包括<pathelement path="${basedir}/target/classes/" />,我认为需要让TestNG的知道跑哪班。

<path id="runtime.classpath"> 
     ... 
     <!-- Target classes --> 
     <pathelement path="${basedir}/target/classes/" /> 
</path> 

但是,我一直在日志中看到TestNG发现了0个适用的类。

我终于从同事一些帮助,看来这是关键的变化:

<path id="runtime.classpath"> 
     ... 
     <!-- path attribute changed to location --> 
     <pathelement location="${basedir}/target/classes/" /> 
</path> 

这也拉动了测试类正确:

<java classpathref="runtime.classpath" 
     classname="org.testng.TestNG" 
     failonerror="false"> 
     <arg value="-d" /> 
     <arg value="${grid.location}/target/reports" /> 
     <arg value="${lib.location}/testng.xml"/> 
     <classpath> 
      <pathelement location="${basedir}/target/classes/" /> 
     </classpath> 
    </java> 

有什么之间的区别pathlocation属性?我看过Writing a Simple Buildfile(特别是类似路径的结构部分),但在该手册中,它看起来像locationpath更具体。这在经验上似乎并非如此,但我无法弄清楚为什么。

回答

8

它看起来像路径和位置之间的差异是很多条目与一个。位置是文件或目录,路径可以是列表。

manual

位置属性指定相对 到项目的基本目录的单个文件或目录(或绝对文件名),而 路径属性接受的冒号或者分号分隔的列表 位置。路径属性旨在与预定义的 路径一起使用 - 在任何其他情况下,应优先考虑位置属性为 的多个元素。

请注意,ant使用的JVM与java任务使用的JVM几乎没有关系。默认情况下,ant的环境与通过ant的java任务启动的环境不同。当你想要使用一个蚂蚁想要使用的不同JVM时,这实际上很有用,并且使事情变得明确,这有助于避免以后发生意外。

退房的文档的java task,特别clonevm

clonevm:如果设置为true,那么所有的系统属性和 引导类路径中派生的Java虚拟机都将是一样的 者的运行Ant的Java VM。默认值为“false”(如果禁用了叉号 ,则忽略)。因为Ant 1.7

+0

这是如何区分'pathelement'的'path'和'location'属性的?您的意思是,将路径结构添加为Java任务的类路径引用会有所不同,具体取决于Ant JVM还是分叉的JVM正在运行? – Feanor

+0

好问题。在上面添加了一些,你可能想尝试在详细模式下使用调试(-v -d)运行它们,并查看这两个文件的不同之处。 –

相关问题