【问题标题】:Can't make JUnit work (assertThat/hasItem)无法使 JUnit 工作(assertThat/hasItem)
【发布时间】:2012-07-11 06:26:23
【问题描述】:

我刚刚创建了一个虚拟 Maven 项目:

<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 的输出

【问题讨论】:

    标签: java junit junit4 hamcrest


    【解决方案1】:

    你有:

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

    当你想要的是:

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

    【讨论】:

    • 真的好点,真是个愚蠢的错误。但是还是不行,请看更新后的问题。
    • @lok​​i2302:嗯。我现在正在手机上打字,所以我无法轻松测试,但是 maven-compiler-plugin 使用的默认源版本 IIRC 非常古老。如果您configure the compiler plugin 使用源版本 1.7 是否有效?
    • @lok​​i2302:另外,我很欣赏复选标记,但如果您的问题确实没有解决,您可能不应该将任何答案标记为已接受——这只会阻止其他人回答问题.
    • 我已经清理了本地 Maven 缓存,重新启动了机器,然后它就可以工作了。因此,从您提到的代码角度来看,似乎只有 1 个问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多