私は私の小さなプロジェクトにテストを追加したかった(コードからいくつかのビットを削除し、パッケージ名を変更したため、これに関してエラーが表示された場合、これではないかもしれないことに注意してください;))
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から拡張しようとしましたが、助けにはなりませんでした)
mvn test
を実行した後、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
を実行しましたが、助けにはなりませんでした。投稿する必要がある場合は教えてください。
正当な理由がない限り、POMの<sourceDirectory>
要素の<build>
設定をオーバーライドしないでください。この属性は、Mavenが非テストコードを探す場所を決定します。この属性のデフォルト値はsrc/main/Java
です。 <testSourceDirectory>
属性は、パスをtest codeに設定します(これはデフォルトでsrc/test/Java
に設定されます。<sourceDirectory>
を単にsrc
に設定すると、Mavenはsrc
ディレクトリにはsrc/test/Java
が含まれているため、Mavenはメインアプリケーションの一部としてテストコードをコンパイルしようとします。
メインアプリケーションをコンパイルするとき(compile
フェーズ中)、Mavenはtest
スコープの依存関係を省略するため、これは重要です。テストコードは、メインコンパイルの後、別のフェーズ(test-compile
フェーズ)でコンパイルされます。
そのため、Mavenはメインアプリケーションの一部としてテストコードをコンパイルしようとしたため、junit
依存関係を省略し、クラスパスで使用できませんでした。ここでの解決策は、POMで<sourceDirectory>
要素を単に指定しないことです。
デフォルトでは、mavenはこれらのフォルダーでJavaおよびテストクラス-src/main/Javaおよびsrc/test/Javaをそれぞれ探します
ソースの下のテストクラスでsrcが指定され、pom.xmlのjunit依存関係のスコープがtestとして指定されている場合、org.unitはmavenによって検出されません。