2013-02-22 3 views
23

작은 프로젝트에 테스트를 추가하고 싶습니다. (코드에서 & 변경된 코드 일부를 제거 했으므로 관련 오류가있는 경우 참조하십시오.종속 관계에 있음에도 불구하고 Maven이 org.junit을 찾지 못했습니다.

mvn test를 실행 한 후에 그것은 나를를 보여줍니다)

package my.pckg; 


import static org.junit.Assert.*; 

import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 


public class SignedRequestCallbackTest { 


    @Before 
    public void setUp() throws Exception { 
    } 

    @After 
    public void tearDown() throws Exception { 
    } 

    @Test 
    public void testCorrectSignedRequest() { 
     assertTrue(false); 
    } 

} 

(나는 또한 정적 가져 오기를 제거하기 위해의 TestCase에서 확장하는 시도했지만 도움이되지 않았다 :));이 그렇지이있을 수 있습니다 org.junit을 찾을 수없는 오류 :

[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Test Server 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ server --- 
[WARNING] Using platform encoding (MacRoman actually) to copy filtered resources, i.e. build is platform dependent! 
[INFO] Copying 0 resource 
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ server --- 
[WARNING] File encoding has not been set, using platform encoding MacRoman, i.e. build is platform dependent! 
[INFO] Compiling 9 source files to /Users/michael/Projects/fbmuc/server/target/classes 
[INFO] ------------------------------------------------------------- 
[ERROR] COMPILATION ERROR : 
[INFO] ------------------------------------------------------------- 
[ERROR] ~/code/src/test/java/my/pckg/SignedRequestCallbackTest.java:[4,27] package org.junit does not exist 
[ERROR] ~/code/src/test/java/my/pckg/SignedRequestCallbackTest.java:[6,16] package org.junit does not exist 
[ERROR] ~/code/src/test/java/my/pckg/SignedRequestCallbackTest.java:[7,16] package org.junit does not exist 
[ERROR] ~/code/src/test/java/my/pckg/SignedRequestCallbackTest.java:[8,16] package org.junit does not exist 
[ERROR] ~/code/src/test/java/my/pckg/SignedRequestCallbackTest.java:[14,9] cannot find symbol 
symbol : class Before 
location: class my.pckgSignedRequestCallbackTest 
[ERROR] ~/code/src/test/java/my/pckg/SignedRequestCallbackTest.java:[18,9] cannot find symbol 
symbol : class After 
location: class my.pckgSignedRequestCallbackTest 
[ERROR] ~/code/src/test/java/my/pckg/SignedRequestCallbackTest.java:[22,9] cannot find symbol 
symbol : class Test 
location: class my.pckgSignedRequestCallbackTest 
[ERROR] ~/code/src/test/java/my/pckg/SignedRequestCallbackTest.java:[24,12] cannot find symbol 
symbol : method assertTrue(boolean) 
location: class my.pckgSignedRequestCallbackTest 
[INFO] 9 errors 
[INFO] ------------------------------------------------------------- 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2.161s 
[INFO] Finished at: Fri Feb 22 18:02:37 CET 2013 
[INFO] Final Memory: 8M/81M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project server: Compilation failure: Compilation failure: 
[ERROR] ~/code/src/test/java/my/pckg/SignedRequestCallbackTest.java:[4,27] package org.junit does not exist 
[ERROR] ~/code/src/test/java/my/pckg/SignedRequestCallbackTest.java:[4,4] static import only from classes and interfaces 
[ERROR] ~/code/src/test/java/my/pckg/SignedRequestCallbackTest.java:[6,16] package org.junit does not exist 
[ERROR] ~/code/src/test/java/my/pckg/SignedRequestCallbackTest.java:[7,16] package org.junit does not exist 
[ERROR] ~/code/src/test/java/my/pckg/SignedRequestCallbackTest.java:[8,16] package org.junit does not exist 
[ERROR] ~/code/src/test/java/my/pckg/SignedRequestCallbackTest.java:[14,9] cannot find symbol 
[ERROR] symbol : class Before 
[ERROR] location: class my.pckgSignedRequestCallbackTest 
[ERROR] ~/code/src/test/java/my/pckg/SignedRequestCallbackTest.java:[18,9] cannot find symbol 
[ERROR] symbol : class After 
[ERROR] location: class my.pckgSignedRequestCallbackTest 
[ERROR] ~/code/src/test/java/my/pckg/SignedRequestCallbackTest.java:[22,9] cannot find symbol 
[ERROR] symbol : class Test 
[ERROR] location: class my.pckgSignedRequestCallbackTest 
[ERROR] ~/code/src/test/java/my/pckg/SignedRequestCallbackTest.java:[24,12] cannot find symbol 
[ERROR] symbol : method assertTrue(boolean) 
[ERROR] location: class my.pckgSignedRequestCallbackTest 
[ERROR] -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException 

내 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"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.example</groupId> 
    <artifactId>server</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>TestServer</name> 
    <description>Test</description> 
    <build> 
     <sourceDirectory>src</sourceDirectory> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3.2</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <configuration> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
    <dependencies> 
     <!-- Facebook library --> 
     <dependency> 
      <groupId>com.restfb</groupId> 
      <artifactId>restfb</artifactId> 
      <version>1.6.11</version> 
     </dependency> 
     <!-- Gson: Java to Json conversion --> 
     <dependency> 
      <groupId>com.google.code.gson</groupId> 
      <artifactId>gson</artifactId> 
      <version>2.2.2</version> 
      <scope>compile</scope> 
     </dependency> 
     <!-- Tigase server snapshot --> 
     <dependency> 
      <groupId>tigase</groupId> 
      <artifactId>tigase-server</artifactId> 
      <version>5.2.0-SNAPSHOT</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-codec</groupId> 
      <artifactId>commons-codec</artifactId> 
      <version>1.7</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.11</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
    <repositories> 
     <repository> 
      <id>tigase</id> 
      <name>Tigase repository</name> 
      <url>http://maven.tigase.org</url> 
     </repository> 
     <repository> 
      <id>tigase-snapshot</id> 
      <name>Tigase repository</name> 
      <url>http://build.xmpp-test.net/maven/</url> 
      <snapshots> 
       <enabled>true</enabled> 
      </snapshots> 
     </repository> 
    </repositories> 
</project> 

MVN 의존성 : 나무 :

[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Test Server 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ server --- 
[INFO] my.pckg:server:jar:0.0.1-SNAPSHOT 
[INFO] +- com.restfb:restfb:jar:1.6.11:compile 
[INFO] +- com.google.code.gson:gson:jar:2.2.2:compile 
[INFO] +- tigase:tigase-server:jar:5.2.0-SNAPSHOT:compile 
[INFO] | +- tigase:tigase-utils:jar:3.4.1-SNAPSHOT:compile 
[INFO] | \- tigase:tigase-xmltools:jar:3.4.3-SNAPSHOT:compile 
[INFO] +- commons-codec:commons-codec:jar:1.7:compile 
[INFO] \- junit:junit:jar:4.11:test 
[INFO] \- org.hamcrest:hamcrest-core:jar:1.3:test 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESS 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 2.240s 
[INFO] Finished at: Fri Feb 22 18:07:55 CET 2013 
[INFO] Final Memory: 5M/81M 
[INFO] ------------------------------------------------------------------------ 

MVN 버전 :

Apache Maven 3.0.3 (r1075438; 2011-02-28 18:31:09+0100) 
Maven home: /usr/share/maven 
Java version: 1.6.0_41, vendor: Apple Inc. 
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 
Default locale: de_CH, platform encoding: MacRoman 
OS name: "mac os x", version: "10.8.2", arch: "x86_64", family: "mac" 

나는 전문가가 아니에요 있습니다 java 나 maven에서는 시작하기 만하면됩니다 (특히 Maven의 경우). 다른 기사 및 질문에서 본 내용에서 src/test/java 내 테스트와 src/main/java 내 "실제"코드 내에서 테스트해야합니다.

또한 전체 ~/.m2/폴더를 한 번 제거했으나 여전히 작동하지 않았습니다.

mvn test -X도 실행했지만 도움이되지 않았습니다. 게시해야한다면 나에게 말해줘.

답변

39

정당한 이유가없는 한 POM <build> 요소의 설정을 무시해야합니다. 이 속성은 메이븐이 비 테스트 코드를 찾을 곳을 결정합니다. 이 속성의 기본값은 src/main/java입니다. <testSourceDirectory> 속성은 테스트 코드의 경로 (src/test/java이 기본값을 설정합니다. 설정함으로써 <sourceDirectory> 단순히 src, 메이븐은 src 디렉토리 src/test/java을 포함하기 때문에 전체 디렉토리. 기본 응용 프로그램 코드를 포함하는 것을 고려, 메이븐은 다음 테스트를 컴파일을 시도 할 수있는 메인 프로그램의 일부로서 코드.

합니다 (compile 단계) 메인 프로그램을 컴파일시에, 메이븐 애프터 test 범위. 테스트 코드는 별도의 상 (test-compile 상)로 컴파일하여 의존성을 생략하기 때문에 이것은 중요 메인 컴파일

Maven이 메인 애플리케이션의 일부로 테스트 코드를 컴파일하려고했기 때문에 junit 의존성이 생략되었고 클래스 패스에서 사용할 수 없었습니다. 여기 해결책은 단순히 POM에 <sourceDirectory> 요소를 지정하지 않는 것입니다. 기본적으로

+0

감사합니다.그것은 정말로 제가 생각한 마지막 것이고 완전히 이해할 수 있습니다. 나는 그것이 왜 이렇게 있는지 알지 못한다. 나는 이클립스가 새 프로젝트를 만들고 그것에 maven을 추가했을 때 그것을 좋아했다고 생각한다. 다시 한번 감사드립니다! –

2

은 Maven은 각각 자바 클래스와 테스트 클래스에 대한 이러한 폴더에 보이는 - SRC/메인/자바 및 SRC/테스트/자바 SRC에이 소스에서 테스트 클래스와의 JUnit의 범위로 지정

maven은 test-org.unit을 찾을 수 없으므로 pom.xml의 종속성에 대해 언급합니다.

관련 문제