2013-05-16 2 views
2

maven을 사용하여 여러 소스 디렉토리를 컴파일하려고 할 때 org.testng.annotations 패키지가 존재하지 않습니다. 오류가 발생합니다. webdriver 테스트를 실행하고 있으며 모든 테스트에서 org.testng.annotations 가져 오기를 가져오고 있습니다. I 인 IntelliJ (12) 사용하고 내 src 디렉토리는 다음과 같습니다 -여러 소스 디렉토리를 pom.xml에 추가하는 방법

SRC

-->main 
    --> java 
     --> package1 
      --> file1.java 
     --> package2 
      --> file2.java 
    -->test 
    --> java 
     --> package1 
      --> file1.java 
      --> file2.java 
     --> package2 
     --> package3 
     --> package4 
     --> package5 
     --> package6 

내가 pom.xml 파일에서 사용하고있는 빌드 플러그인은 다음과 같습니다 -

<?xml version="1.0" encoding="UTF-8"?> 
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"> 

<parent> 
    <artifactId>core-xxxxx</artifactId> 
    <groupId>core-xxxxx</groupId> 
    <version>1.0</version> 
</parent> 
<modelVersion>4.0.0</modelVersion> 
<artifactId>tests</artifactId> 
    <dependencies> 
    <dependency> 
     <groupId>org.seleniumhq.selenium</groupId> 
     <artifactId>selenium-api</artifactId> 
     <version>2.32.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.testng</groupId> 
     <artifactId>testng</artifactId> 
     <version>6.8.1</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 
    <build> 
     <directory>target</directory> 
    <outputDirectory>target/classes</outputDirectory> 
    <testOutputDirectory>target/test-classes</testOutputDirectory> 
<plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>build-helper-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>add-source</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>add-source</goal> 
        </goals> 
        <configuration> 

         <sources> 
          <source>src/main/java</source> 
          <source>src/test/java</source> 
         </sources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
</plugins> 
</build> 
</project> 

이유입니다 org.testng.annotations에 오류가 없습니다. 해야 추가하면 생산적인 자바 클래스 소스 파일에 대한 SRC/메인/자바/ 디렉토리 패키지 이름에서

src 
    main 
     java 
    test 
     java 

:

+1

여기를 살펴 보았지만 문제가 해결되지 않았습니다. - http://stackoverflow.com/questions/9752972/how-to-add-an-extra-source-directory-for-maven-to-compile -with-include-in-the-bui – Riv

+0

전체 pom 파일과 프로젝트의 전체 디렉토리 구조를 게시 할 수 있습니까? – khmarbaise

답변

1

받는다는 프로젝트의 기본 레이아웃은 다음과 같다. src/test/java/ 단위의 패키지 이름은 java 클래스 소스 파일을 테스트합니다.

그리고 하지 말아야합니다. 레이아웃을 변경해야합니다. 실제로 그렇게해야 할 이유가 충분하지 않은 경우 레이아웃을 변경하십시오.

또한 Maven 기본값 (target, target/classes, target/test-classes 등)의 기본값을 다시 정의하는 것은 구성 패러다임보다 규칙에 위배됩니다.

것은 당신이 단위 테스트가 같은 이름을 지정해야합니다 의미 명명 convention for unit tests을 따를 필요가 있음을 알고 있어야 다음

<includes> 
<include>**/*Test*.java</include> 
<include>**/*Test.java</include> 
<include>**/*TestCase.java</include> 
</includes> 

을하지만 당신의 경우에 우리는 당신이 필요로하는 것을 의미하는 통합 테스트에 대해 이야기한다고 가정 naming convention

외에도 지금 메이븐에서 그 단위 테스트는 통합 테스트 반면 maven-surefire-plugin에 의해 실행됩니다 것을에서
<includes> 
<include>**/IT*.java</include> 
<include>**/*IT.java</include> 
<include>**/*ITCase.java</include> 
</includes> 

이에 의해 실행됩니다 다음을 사용하는.

+0

@ khmarbaise-- 의견을 보내 주셔서 감사합니다. 위의 접근 방식은 나를 위해 클린 컴파일 (mvn 클린 컴파일)하지만,이 명령을 사용하여 테스트를 실행할 때 mvn clean test -DsuiteFile = resources/test-suites/audioSuite.xml 패키지 2가 패키지 첫 번째 소스 디렉토리에. 어떤 아이디어? – Riv

0

testng 주석을 찾을 수 없다는 오류가 발생하여 src/main/java/package1/baseclass.java에서 src/main/test/package1/baseclass.java로 기본 클래스를 이동하고 testng 주석 오류가 해결되었습니다.

관련 문제