我正在尝试使用Ant和Maven来构建一个项目。我对测试单元使用testNG。如这里所述(http://testng.org/doc/ant.html),我已经定义了taskdef如下:
<taskdef resource="testngtasks" classpath="testng.jar"/>
在Ant。在Maven中,我添加了以下内容(如这里所述:http://testng.org/doc/maven.html)
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.2</version>
</dependency>
Maven正在从Maven存储库获取文件,我已经检查了/.m2下的位置。现在我已经从maven获得了测试ng,我应该更改任务定义器,以便在maven存储库中使用这个新的任务定义器。我不知道该怎么做。我尝试了以下操作:
<taskdef resource ="testngtasks" classname="org.testng" />
和
<taskdef resource ="testngtasks" classname="org.testng" classpathref="maven.compile.classpath"/>
和
<taskdef resource ="testngtasks" />
但是没有成功,第二个抱怨我不应该使用classpathref,第一个说我应该指定class。第三个是有点用,但不是完全用。它正在执行,我猜它通过了taskdef步骤,但它没有执行测试。部分Ant(用于第三个):
<taskdef resource="testngtasks" />
<target name="test" depends="compile">
<echo message="running tests" />
部分Ant输出:(注意,执行了echo,它以某种方式传递给taskdef步骤)
compile:
[javac] /home/shahin/Files/Development/Ant/ServiceEJBSample3/build-testNG.xml:31: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
test:
[echo] running tests
BUILD FAILED
/home/shahin/Files/Development/Ant/ServiceEJBSample3/build-testNG.xml:84: Problem: failed to create task or type testng
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
我不确定如何在Maven存储库中使用testNG库来定义(taskdef) Ant中的testngtasks。如有任何见地,不胜感激
尝试为taskdef的类路径添加一个pathelement属性:
<taskdef resource="testngtasks">
<classpath>
<pathelement path="[path to]/testng.jar"/>
</classpath>
</taskdef>
首先硬编码pathelement的路径,以确保它为您工作。
我使用下面的taskdef让它工作:
<taskdef resource="testngtasks" classpath="./lib/testng-6.2.jar"/>
当Maven检索到这个jar时,它不会被命名为testing .jar。因此,您需要将其重命名为适当的jar,并将路径更新为jar。