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

时间:2012-09-26 16:23:20

标签: java unit-testing hamcrest

我现在使用以下代码来声明boolean值,但不推荐使用方法org.hamcrest.Matchers.is()

assertThat(someValue, is(false));

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


收到评论/答案后,

修改

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

enter image description here

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

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

3 个答案:

答案 0 :(得分:44)

您是否尝试过equalTo(T)

assertThat(someValue, equalTo(false));

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

答案 1 :(得分:9)

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

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

原始答案

问题在于JUnit includes a set of Hamcrest classes in its JAR。您现在可以使用junit-dep.jar,但JUnit的较新版本(目前为4.9和4.10)将省略它们。

答案 2 :(得分:3)

据说,在文档中使用instanceOf作为类匹配器。

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

is(IOException.class);

将是

is(instanceOf(IOException.class));

例如。