2012-07-11 20 views
4

我剛剛創建了一個虛擬的Maven項目:不能讓JUnit的工作(assertThat/hasItem)

<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.loki2302</groupId> 
    <artifactId>junit-test-app</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>junit-test-app</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.10</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
</project> 

我在這個項目中唯一的測試:

package com.loki2302; 

import java.util.Arrays; 
import java.util.List; 

import org.junit.Test; // for @Test annotation 
import static org.junit.Assert.*; // for assertThat() 
import static org.junit.matchers.JUnitMatchers.*; // for hasItem() 

public class AppTest { 
    @Test 
    public void sillyTest() { 
     List<Integer> list = Arrays.asList(123, 456); 
     assertThat(list, hasItem(123)); 
    } 
} 

當我運行mvn clean test,它說:

D:\junit-test-app>mvn clean test 
[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building junit-test-app 0.0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ junit-test-app --- 
[INFO] Deleting D:\junit-test-app\target 
[INFO] 
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ junit-test-app --- 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory D:\junit-test-app\src\main\resources 
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ junit-test-app --- 
[INFO] Compiling 1 source file to D:\junit-test-app\target\classes 
[INFO] 
[INFO] --- maven-resources-plugin:2.4.3:testResources (default-testResources) @ junit-test-app --- 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory D:\junit-test-app\src\test\resources 
[INFO] 
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ junit-test-app --- 
[INFO] Compiling 1 source file to D:\junit-test-app\target\test-classes 
[INFO] ------------------------------------------------------------- 
[ERROR] COMPILATION ERROR : 
[INFO] ------------------------------------------------------------- 
[ERROR] \junit-test-app\src\test\java\com\loki2302\AppTest.java:[15,19] error: cannot find symbol 
[INFO] 1 error 
[INFO] ------------------------------------------------------------- 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 1.512s 
[INFO] Finished at: Wed Jul 11 10:38:06 MSD 2012 
[INFO] Final Memory: 12M/107M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:testCompile (default-testCompile) on project junit-test-app: Compilation failure 
[ERROR] \junit-test-app\src\test\java\com\loki2302\AppTest.java:[15,19] error: cannot find symbol 
[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 

Maven的版本:

D:\junit-test-app>mvn --version 
Apache Maven 3.0.3 (r1075438; 2011-02-28 20:31:09+0300) 
Maven home: D:\apache-maven-3.0.3\bin\.. 
Java version: 1.7.0, vendor: Oracle Corporation 
Java home: C:\Program Files\Java\jdk1.7.0\jre 
Default locale: en_US, platform encoding: Cp1251 
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows" 

Java版本:

D:\junit-test-app>java -version 
java version "1.7.0" 
Java(TM) SE Runtime Environment (build 1.7.0-b147) 
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode) 

我如何工作的呢?

更新

AssertJUnitMatchers,更新的輸出固定進口mvn clean test

回答

9

您有:

import org.junit.Assert.*; 
import org.junit.matchers.JUnitMatchers.*; 

如果你想要的是:

import static org.junit.Assert.*; 
import static org.junit.matchers.JUnitMatchers.*; 
+0

真的去od點,這樣一個愚蠢的錯誤。但它仍然不起作用,請參閱最新的問題。 – agibalov 2012-07-11 06:40:22

+1

@ loki2302:嗯。我現在正在打電話給我的手機,所以我無法輕鬆測試,但是IIRC是maven-compiler-plugin使用的默認源碼版本,非常古老。如果你[配置編譯器插件](http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html)使用源代碼版本1.7,它會起作用嗎? – 2012-07-11 06:52:40

+0

@ loki2302:另外,我讚賞這個複選標記,但是如果你的問題確實沒有解決,你可能不應該將任何答案標記爲已接受 - 這隻會阻止其他人回答這個問題。 – 2012-07-11 06:55:22