55

我现在使用下面的代码来断言一个boolean值,但是该方法org.hamcrest.Matchers.is()已被弃用。

assertThat(someValue, is(false));

是否有一个简单的替代语法来测试布尔值而不求助于assertTrue()它会给你像“java.lang.AssertionError”这样的糟糕的失败消息


收到评论/答案后编辑

我最初的担忧是因为 Eclipse 将以下导入语句显示为已弃用

在此处输入图像描述

查看Hamcrest API文档时,该方法有 3 个重载变体,is()其中只有一个已弃用。

因此,为了澄清@mark 的评论和@matt 的答案is(),我在上面发布的使用是有效的并且不被弃用。

4

5 回答 5

50

你试过equalTo(T)吗?

assertThat(someValue, equalTo(false));

我没有看到它is(T)已被弃用 -但是is(Class) 已被弃用

于 2012-09-26T16:25:39.733 回答
10

我曾认为这是一个传递依赖问题,但它实际上只是 Eclipse 中的一个显示问题,它将导入标记为已弃用,因为一个重载的表单是。代码应该可以正常编译,因为导入将公开所有表单。

已弃用的表单已从源中删除,并且不会在下一个版本 (1.4) 中存在。

原始答案

问题是JUnit 在其 JAR 中包含一组 Hamcrest 类。您现在可以使用junit-dep.jar,但 JUnit 的较新版本(目前为 4.9 和 4.10)省略了它们。

于 2012-09-27T16:51:42.233 回答
3

据说,instanceOf用于文档中的类匹配器。

http://junit.org/javadoc/latest/org/hamcrest/core/Is.html#isA(java.lang.Class)

is(IOException.class);

将会

is(instanceOf(IOException.class));

例如。

于 2015-02-23T13:47:46.723 回答
0

这就是2022 年 1 月对我有用的方法

import static org.hamcrest.CoreMatchers.*;
于 2022-01-21T08:43:49.150 回答
0

这是折旧的:

import static org.junit.Assert.assertThat;

我们可以改用这个:

import static org.hamcrest.MatcherAssert.assertThat;
于 2022-02-11T06:01:20.133 回答