2017-04-05 60 views
1

我正在使用Maven运行多个硒自动化测试。当我在Eclipse中进行调试时,通常只需右键单击testing.xml和Run As> TestNG Suite。但是在詹金斯跑步需要使用mvn test跑步。但是,当我运行的是,我得到几个错误:Maven:'程序包不存在'(和其他错误)

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.6.1:compile (default-compile) on project ecom: Compilation failure: Compilation failure: 
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[15,43] package com.company.automation.ecom.pages does not exist 
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[16,43] package com.company.automation.ecom.pages does not exist 
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[110,13] cannot find symbol 
[ERROR] symbol: class Header 
[ERROR] location: class com.company.automation.ecom.HelperMethods 
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[110,62] cannot find symbol 
[ERROR] symbol: class Header 
[ERROR] location: class com.company.automation.ecom.HelperMethods 
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[113,9] cannot find symbol 
[ERROR] symbol: class SignIn 
[ERROR] location: class com.company.automation.ecom.HelperMethods 
[ERROR] /Users/kroe761/Documents/workspace/ecom/src/main/java/com/company/automation/ecom/HelperMethods.java:[113,58] cannot find symbol 
[ERROR] symbol: class SignIn 
[ERROR] location: class com.company.automation.ecom.HelperMethods 

我知道文件是否存在,当我运行的TestNG的套件一切正常,没有问题。此外,当我跑这java -version我得到这个:

java version "1.8.0_121" 
Java(TM) SE Runtime Environment (build 1.8.0_121-b13) 
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode) 

我知道这是一个配置问题的地方,但我不知道有足够的了解行家/ Java配置弄明白。 Maven告诉我的文件已经不在我的文件中,而且它们绝对存在。这里是我的pom.xml文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.19.1</version> 
       <configuration> 
        <properties> 
         <property> 
          <name>listener</name> 
          <value>com.kirklands.automation.ecom.retry.MyTestListenerAdapter</value> 
         </property> 
        </properties> 
        <suiteXmlFiles> 
         <suiteXmlFile>testng.xml</suiteXmlFile> 
        </suiteXmlFiles> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.6.1</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
    <groupId>com.kirklands.automation</groupId> 
    <artifactId>ecom</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <name>ecom</name> 
    <url>http://maven.apache.org</url> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 
    <dependencies> 
     <dependency> 
      <groupId>org.testng</groupId> 
      <artifactId>testng</artifactId> 
      <version>6.8</version> 
     </dependency> 
     <dependency> 
      <groupId>org.seleniumhq.selenium</groupId> 
      <artifactId>selenium-java</artifactId> 
      <version>3.0.1</version> 
     </dependency> 
     <dependency> 
      <groupId>io.github.bonigarcia</groupId> 
      <artifactId>webdrivermanager</artifactId> 
      <version>1.5.0</version> 
     </dependency> 
     <dependency> 
      <groupId>com.googlecode.json-simple</groupId> 
      <artifactId>json-simple</artifactId> 
      <version>1.1.1</version> 
     </dependency> 
    </dependencies> 
</project> 

项目结构:

src/main/java 
    {package com.company.automation.ecom} 
     CreditCard.java 
     HelperMethods.java 
src/test/java 
    {package com.company.automation.ecom.pages} 
     Header.java 
     SignIn.Java 
     (etc...) 
    {package com.company.automation.ecom.tests} 
     HeaderTests.java 
     (etc...) 
+0

当你在本地环境中运行'mvn test'时,你有同样的问题吗? – alayor

+0

是的。如果我从命令行运行'mvn test'(与我的pom.xml文件在同一个文件夹中),或者如果我在eclipse和Run As> Maven Test中右键单击该项目,我会得到相同的输出。 – kroe761

+0

你需要切换你的maven-compiler-plugin以使用java的source/target 1.8。默认值是1.5。请参阅https://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html –

回答

6

貌似您的问题似乎是由于事实,你从你的src/main/java测试源试图访问 - 这是位于src/test/java

/用户/ kroe761 /文件/工作区/ ECOM/src目录/主/ JAVA /com/company/automation/ecom/HelperMethods.java:[15,43]包com.company.automation.ecom.pages不存在

它会从另一个侧面工作:如果你会用你的来源(src/main/java)来自测试范围(src/test/java)。

Maven有他自己的lifecycle

它有一个严格后果

  • compile - 编译项目
  • test的源代码 - 使用适合的单元测试框架测试编译的源代码。这些测试不应要求代码被打包或部署

而在compile期间,您只能编译您的源代码。但是,这取决于您的测试(页面包),目前无法编译,因为它只会在test阶段编译。
因此编译失败

为了解决尝试改变你的项目结构,一点点:

src/main/java 
    {package com.company.automation.ecom} 
     CreditCard.java 
     HelperMethods.java 
    {package com.company.automation.ecom.pages} 
     Header.java 
     SignIn.Java 
     (etc...) 
src/test/java 
    {package com.company.automation.ecom.tests} 
     HeaderTests.java 

而且你的测试应该使用源(核心&页)没有任何问题。

+1

是的,这看起来似乎解决了它。谢谢你的maven澄清! – kroe761

1

您需要先运行maven clean install命令。

该命令将编译你的missing包,它甚至会运行测试。

更新:您应该将com.company.automation.ecom.pages包更改为您的src/main/java文件夹。这样它可以编译在maven compile阶段。

+0

我试着运行'mvn clean install',但我得到了同样的错误。 – kroe761