1

我是 ANT build 的新手,在编译 ant build.xml 时出现错误“包 org.testng.annotations 不存在”和“包 org.openqa.selenium 不存在”。

这是 build.xml

<project name="TestNGProject" default="usage" basedir=".">
<!-- ===============Initialize property============================ -->
<property environment="env"/>
<property name="ws.home" value="${basedir}"/
<property name="ws.jars" value="C:\Users\Documents\selenium-2.35.0\AllJars"/>
<property name="test.dest" value="${ws.home}/build"/>
<property name="test.src" value="${ws.home}/src"/>
<property name="ng.results" value="test-output"/>

<target name="setClassPath" unless="test.classpath">
   <path id="classpath_jars">
      <fileset dir="${ws.jars}" includes="*.jar"/>
   </path>
   <pathconvert pathsep="."
    property="test.classpath"
    refid="classpath_jars"/>
</target>

<target name="init" depends="setClassPath">
   <tstamp>
       <format property="start.time" pattern="MM/dd/yyyy hh:mm aa"/>
    </tstamp>

   <condition property="ANT"
       value="${env.ANT_HOME}/bin/ant.bat"
       else="${env.ANT_HOME}/bin/ant">
       <os family="windows" />
   </condition>

   <!--taskdef name="testng" classpath="${test.classpath}"
        classname="org.testng.TestNGAntTask" /-->

</target>

<!--all-->
<target name="all">
</target>

<!--clean-->
<target name="clean">
   <delete dir="${test.dest}"/>
</target>

<!--compile-->
<target name="compile" depends="init, clean">
   <delete includeemptydirs="true" quiet="true">
      <fileset dir="${test.dest}" includes="**/*"/>
   </delete>
   <echo message= "making dir..."/>
       <mkdir dir="${test.dest}"/>
   <echo message="classpath---------: ${test.classpath}"/>
   <echo message="compiling..."/>

   <javac
     includeantruntime="false"
     destdir="${test.dest}"
     srcdir="${test.src}"
     classpath="${test.classpath}"
    >
  </javac>
</target>

<!--build-->
<target name="build" depends ="init">
</target>

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

<testng classpath="${test.classpath}:${test.dest}" suitename="suite">
     <xmlfileset dir ="${ws.home}" includes="testng.xml"/>
</testng>

</target>

<target name="usage">
<echo>
   ant run will execute test case
</echo>
</target>

<path id="test.c">
   <fileset dir="${ws.jars}" includes="*.jar"/>
</path>

</project>

这是错误列表

[javac] Compiling 2 source files to C:\Users\workspace\TestNGProject\build
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:3: error: package org.testng.annotations does not exist
[javac] import org.testng.annotations.Test;
[javac]                              ^
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:4: error: package org.testng.annotations does not exist
[javac] import org.testng.annotations.DataProvider;
[javac]                              ^
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:5: error: package org.testng.annotations does not exist
[javac] import org.testng.annotations.BeforeClass;
[javac]                              ^
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:6: error: package org.testng.annotations does not exist
[javac] import org.testng.annotations.AfterClass;
[javac]                              ^
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:7: error: package org.testng does not exist
[javac] import static org.testng.AssertJUnit.assertEquals;
[javac]                         ^
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:7: error: static import only from classes and interfaces
[javac] import static org.testng.AssertJUnit.assertEquals;
[javac] ^
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:9: error: package org.openqa.selenium does not exist
[javac] import org.openqa.selenium.By;
[javac]                           ^
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:10: error: package org.openqa.selenium does not exist
[javac] import org.openqa.selenium.WebDriver;
[javac]                           ^
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:11: error: package org.openqa.selenium does not exist
[javac] import org.openqa.selenium.WebElement;
[javac]                           ^
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:12: error: package org.openqa.selenium.firefox does not exist
[javac] import org.openqa.selenium.firefox.FirefoxDriver;
[javac]                                   ^
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:16: error: cannot find symbol
[javac]     private WebDriver driver;
[javac]             ^
[javac]   symbol:   class WebDriver
[javac]   location: class NewTestNG
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:17: error: cannot find symbol
[javac]       private WebElement FahrenheitInput;
[javac]               ^
[javac]   symbol:   class WebElement
[javac]   location: class NewTestNG
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:18: error: cannot find symbol
[javac]       private WebElement CelsiusInput;
[javac]               ^
[javac]   symbol:   class WebElement
[javac]   location: class NewTestNG
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:19: error: cannot find symbol
[javac]       private WebElement ConvertButton;
[javac]               ^
[javac]   symbol:   class WebElement
[javac]   location: class NewTestNG
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\sample.java
:3: error: package org.testng.annotations does not exist
[javac] import org.testng.annotations.Test;
[javac]                              ^
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:20: error: cannot find symbol
[javac]       @BeforeClass
[javac]        ^
[javac]   symbol:   class BeforeClass
[javac]   location: class NewTestNG
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:29: error: cannot find symbol
[javac]       @DataProvider(name = "CelsToFahrDP")
[javac]        ^
[javac]   symbol:   class DataProvider
[javac]   location: class NewTestNG
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:33: error: cannot find symbol
[javac]       @Test(dataProvider = "CelsToFahrDP")
[javac]        ^
[javac]   symbol:   class Test
[javac]   location: class NewTestNG
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:40: error: cannot find symbol
[javac]       @AfterClass
[javac]        ^
[javac]   symbol:   class AfterClass
[javac]   location: class NewTestNG
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\sample.java
:6: error: cannot find symbol
[javac]   @Test
[javac]    ^
[javac]   symbol:   class Test
[javac]   location: class sample
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:22: error: cannot find symbol
[javac]          driver = new FirefoxDriver();
[javac]                       ^
[javac]   symbol:   class FirefoxDriver
[javac]   location: class NewTestNG
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:25: error: cannot find symbol
[javac]          CelsiusInput = driver.findElement(By.xpath("//form[2]/cente
r[2]/input"));
[javac]                                            ^
[javac]   symbol:   variable By
[javac]   location: class NewTestNG
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:26: error: cannot find symbol
[javac]          FahrenheitInput = driver.findElement(By.xpath("//form[2]/ce
nter[2]/input[2]"));
[javac]                                               ^
[javac]   symbol:   variable By
[javac]   location: class NewTestNG
[javac] C:\Users\workspace\TestNGProject\src\TestNGPackage\NewTestNG.j
ava:27: error: cannot find symbol
[javac]          ConvertButton = driver.findElement(By.xpath("//form[2]/cent
er[2]/input[3]"));
[javac]                                             ^
[javac]   symbol:   variable By
[javac]   location: class NewTestNG
[javac] 24 errors

我还设置了 JAVA_HOME C:\Program Files\Java\jdk1.7.0_25\bin 和 ANT_HOME C:\Users\Documents\selenium-2.35.0\apache-ant-1.9.2

谁能告诉我如何摆脱这个错误。

4

1 回答 1

1

我相信问题出在这里:

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

我不知道任何"."有效路径分隔符的环境。结果是那${test.classpath}不是一个有效的路径。这就是编译器无法访问您的 TestNG 和 Selenium 类的原因。

您不妨将其test.classpathclasspath_jars.

(如果您的 XML 正确缩进,我会更早发现这一点。)

于 2013-10-06T14:41:53.413 回答