我有一个简单的项目,我正在尝试使用Ant构建。我的项目包含testng,但是当我尝试运行构建时收到错误消息。请你帮助我好吗?我花了很多时间试图看看问题是什么,但到目前为止没有任何结果。
这是项目:
package selenium;
import org.testng.annotations.Test;
public class HomePage {
@Test
public void test(){
System.out.println("this is test");
}
}
现在我有一个包含testng.jar的lib文件,我有一个运行该类的test.xml套件,这是我的构建文件:
<?xml version="1.0" encoding="UTF-8"?>
<project name="Concep.TestAutomation" basedir="." default="all">
<property name="src.dir" value="${basedir}/src" />
<property name="build.dir" value="target" />
<property name="classes.dir" value="${build.dir}/classes" />
<property name="suites.dir" value="suites" />
<property name="testng.path" value="lib/testng.jar" />
<property name="testreport.dir" value="${build.dir}/test-output" />
<target name="clean" description="Delete the build directory.">
<delete dir="${build.dir}" />
</target>
<target name="init" depends="clean" description="Create build directories.">
<!--Create the build directory structure used by compile -->
<mkdir dir="${build.dir}" />
<mkdir dir="${classes.dir}" />
<mkdir dir="${testreport.dir}" />
</target>
<target name="compile" depends="init" description="Compile tests.">
<!-- Compile the java code from ${src} into ${classes.dir} -->
<javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true" />
</target>
<target name="run-test" depends="compile" description="Run test suite.">
<!-- Run a testng suite-->
<taskdef resource="testngtasks" classpath="${testng.path}" />
<testng classpathref="${testng.path}" outputDir="${testreport.dir}" haltonfailure="true" verbose="5">
<xmlfileset dir="${suites.dir}" includes="IA-smoke-test.xml" />
</testng>
</target>
<target name="all" depends="run-test" description="Executes all targets." />
<target name="all-debug" description="outputs all vars in use.">
<!-- useful to diagnose runtime problems -->
<echo message="'work.dir' = '${basedir}/..'"/>
<echo message="'lib.dir' = '${basedir}/lib'"/>
<echo message="'src.dir' = '${basedir}/src'"/>
<echo message="'config.dir' = '${basedir}/config'"/>
<echo message="'build.dir' = 'target'"/>
<echo message="'classes.dir' = '${build.dir}/classes'"/>
<echo message="'suites.dir' = '${basedir}/suites'"/>
<echo message="'testng.path' = '${basedir}/lib/testng.jar'"/>
</target>
</project>
答案 0 :(得分:2)
即使我遇到过这个问题也得到了同样的解决方案。
在你的pom.xml文件中删除范围,这应该可以正常工作。
根据pom.xml中的以下代码,删除范围标记。
即使我们已经为Testng导入了maven依赖项,但是当您在XML文件中添加范围标记时,它会将其视为JUnit注释而不是Testng。因此,当我删除范围标记时,My @Test Annotation被视为Testng Annotation。
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.7</version>
**<scope>test</scope>** //Remove this line and compile maven
</dependency>
答案 1 :(得分:0)
所以在这里我如何修复问题,在编译目标上缺少一个属性,即“classpathref”,项目从中看到编译它所需的所有库,没有项目看不到的“classpathref”任何外部系统,所以我已经做了以下修复,
<path id="build.classpath">
<fileset dir="${lib.dir}" includes="**/*.jar" />
<fileset dir="${src.dir}/concep/selenium/core" includes="**/*.java" />
</path>
在我的编译目标中,我添加了以下属性
<javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="build.classpath" debug="true" includeantruntime="false"/>