2013-02-22 24 views
23

私の小さなプロジェクトにテストを追加したいのですが、コード&のコードからいくつかのビットを削除しました。それは私を示しmvn testを実行した後依存関係にあるにもかかわらず、Mavenがorg.junitを見つけられない

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); 
    } 

} 

(私も、静的インポートを除去するために、テストケースから拡張しようとしましたが、それは助けにはならなかった)

:));このことはない、このかもしれません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

理由がない限り、<sourceDirectory>の設定をPOMの<build>要素で上書きしないでください。この属性は、Mavenがの非テストコードを探す場所を決定します。この属性のデフォルト値はsrc/main/javaです。 <testSourceDirectory>属性はsrc/test/javaからテストコードへのパス(このデフォルト値を設定します。srcディレクトリはsrc/test/javaが含まれているので、単純にsrc<sourceDirectory>を設定することにより、Mavenのは、全体のディレクトリは、メインアプリケーションコードを含むようにすることを考えて、Mavenのは、あなたのテストをコンパイルしようとしますメインアプリケーションの一部としてコード。

compile相中)メインアプリケーションをコンパイルするときに、Mavenのは、testスコープとの依存関係を省略ので、これは重要である。テストコードは後に別の相(test-compile相)にコンパイルされますメインコンパイル

Mavenはメインアプリケーションの一部としてテストコードをコンパイルしようとしたので、junitの依存関係は省略され、クラスパスでは利用できませんでした。ここでの解決策は、単にPOMに<sourceDirectory>要素を指定しないことです。デフォルトでは

+0

ありがとうございます!それは本当に私が考えた最後のものであり、完全に理解できます。私はなぜそれがこのような理由を知っていない..私は、私は新しいプロジェクトを作成し、それにメイヴェンを追加したようにそれが好きだったと推測する..再び感謝! –

2

は、MavenはそれぞれJavaおよびテストクラスのために、これらのフォルダを見て - のsrc /メイン/ JavaおよびSRC /テスト/ javaのsrcがそのソースの下でのテストクラスとJUnitのためのスコープで指定されている

test-org.unitはmavenには見つからないため、pom.xmlの依存関係が記述されています。

関連する問題