使用Deprecated Hamcrest方法的替代方法是()?

Bra*_*rad 51 java unit-testing hamcrest

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

assertThat(someValue, is(false));
Run Code Online (Sandbox Code Playgroud)

是否有一个简单的替代语法来测试布尔值而不求助于assertTrue()给出不良的失败消息,如"java.lang.AssertionError"


收到评论/答案后编辑

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

在此输入图像描述

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

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

mat*_*t b 46

你试过equalTo(T)吗?

assertThat(someValue, equalTo(false));
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢你的澄清.你是对的`是(T)`不被弃用.我看到它的重载sibling`是(Class <T>)`已被弃用,这让我相信`is()`的所有用法都被弃用了. (6认同)

Dav*_*ess 9

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

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

原始答案

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

  • @aron我已经更新了我的答案,我发现它只是一个Eclipse显示问题. (2认同)

N-R*_*YAN 7

这已被弃用:

import static org.junit.Assert.assertThat;
Run Code Online (Sandbox Code Playgroud)

我们可以用这个来代替:

import static org.hamcrest.MatcherAssert.assertThat;
Run Code Online (Sandbox Code Playgroud)