首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何同时使用JUnit和Hamcrest?

如何同时使用JUnit和Hamcrest?
EN

Stack Overflow用户
提问于 2011-04-06 23:56:58
回答 7查看 69.1K关注 0票数 89

我不能理解JUnit 4.8如何与Hamcrest匹配器一起工作。在org.hamcrest.CoreMatchers中的junit-4.8.jar内部定义了一些匹配器。同时,在org.hamcrest.Matchershamcrest-all-1.1.jar中还有一些其他的匹配器。那么,该去哪里呢?我是否应该显式地将hamcrest JAR包含到项目中,并忽略JUnit提供的匹配器?

特别是,我对empty() matcher很感兴趣,但在这些jars中找不到它。我还需要别的东西吗?:)

还有一个哲学问题:为什么JUnit将org.hamcrest包包含在自己的发行版中,而不是鼓励我们使用原始的hamcrest库?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-04-07 00:29:55

junit提供了名为assertThat()的新检查断言方法,该方法使用匹配器,应该提供更具可读性的测试代码和更好的失败消息。

为了使用它,junit中包含了一些核心匹配器。对于基本的测试,您可以从这些开始。

如果你想使用更多的匹配器,你可以自己编写或者使用hamcrest库。

以下示例演示如何在ArrayList上使用空匹配器:

代码语言:javascript
复制
package com.test;

import static org.hamcrest.Matchers.empty;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

public class EmptyTest {
    @Test
    public void testIsEmpty() {
        List myList = new ArrayList();
        assertThat(myList, is(empty()));

    }
}

(我在构建路径中包含了hamcrest-all.jar )

票数 50
EN

Stack Overflow用户

发布于 2011-09-09 03:42:18

如果您使用的Hamcrest版本高于或等于1.2,那么您应该使用junit-dep.jar。这个jar没有Hamcrest类,因此可以避免类加载问题。

从JUnit 4.11开始,junit.jar本身就没有Hamcrest类。不再需要junit-dep.jar

票数 51
EN

Stack Overflow用户

发布于 2011-04-07 00:59:19

没有完全回答你的问题,但你绝对应该试试FEST-Assert fluent assertions API。它正在与Hamcrest竞争,但它的API要简单得多,只需要一个静态导入。下面是cpater使用FEST提供的代码:

代码语言:javascript
复制
package com.test;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import static org.fest.assertions.Assertions.assertThat;

public class EmptyTest {
    @Test
    public void testIsEmpty() {
        List myList = new ArrayList();
        assertThat(myList).isEmpty();
    }  
}

编辑: Maven坐标:

代码语言:javascript
复制
<dependency>
  <groupId>org.easytesting</groupId>
  <artifactId>fest-assert</artifactId>
  <version>1.4</version>
  <scope>test</scope>
</dependency>
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5569394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档