I wanted to add a test to my small project (please note I removed some bits from the code & changed package names, so if there's any error you see regarding this it might be not this ;)):
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); } }
(I also tried to extend from TestCase in order to remove the static import but it didn't help)
After running mvn test
it shows me an error that it couldn't find 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
My pom.xml looks like this:
<?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 dependency:tree:
[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 version:
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"
Please note that I'm not an expert in java nor in maven, just getting started (especially with maven). From what I've seen from other articles and questions, I should have my tests within src/test/java
and my "real" code within src/main/java
- I have done it like this.
Also I removed once the whole ~/.m2/ folder and it still didn't work.
I also did run mvn test -X
but it didn't help me. If I should post it please tell me so.
The solution to this is to add junit library as dependency to the project. This can be done by adding junit to global library and then hovering over the error(junit word) and right clicking to add junit to class path.
Until JUnit 4, Maven will only run the test classes which are marked as public. We should note, though, that this won't be an issue with JUnit 5+. However, the actual test methods should always be marked as public. Here, we can notice that the test method is marked as private.
We can run our unit tests with Maven by using the command: mvn clean test. When we run this command at command prompt, we should see that the Maven Surefire Plugin runs our unit tests. We can now create a Maven project that compiles and runs unit tests which use JUnit 5.
You shouldn't override your <sourceDirectory>
setting in the POM's <build>
element unless you have a good reason to. This attribute determines where Maven looks for non-test code. The default value for this attribute is src/main/java
. The <testSourceDirectory>
attribute sets the path to test code (this defaults to src/test/java
. By setting the <sourceDirectory>
to simply src
, Maven considers that entire directory to contain main application code. Since the src
directory contains src/test/java
, Maven then tries to compile your test code as part of the main application.
This is significant because when compiling the main application (during the compile
phase), Maven omits dependencies with test
scope. Test code is compiled in a separate phase (the test-compile
phase) after the main compile.
So since Maven tried to compile your test code as part of the main application, it omitted the junit
dependency, and they weren't available on the classpath. The solution here is to simply not specify the <sourceDirectory>
element in the POM.
By default , maven looks at these folders for java and test classes respectively - src/main/java and src/test/java
When the src is specified with the test classes under source and the scope for junit dependency in pom.xml is mentioned as test - org.unit will not be found by maven.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With