What is the alternative to using the Deprecated Hamcrest method is()?

主宰稳场 提交于 2019-12-20 10:15:06

问题


I use the following code at the moment to assert on a boolean value, however the method org.hamcrest.Matchers.is() is deprecated.

assertThat(someValue, is(false));

Is there a simple alternative syntax to test for boolean values without resorting to assertTrue() which gives you poor failure messages like "java.lang.AssertionError"


Edit after receiving comments/answers

My initial concerns were raised because Eclipse shows the following import statement as deprecated

On viewing the Hamcrest API docs there are 3 overloaded variations of the is() method, only one of which is deprecated.

Therefore, to clarify the comment from @mark and the answer from @matt, the use of is() that I have posted above is valid and not deprecated.


回答1:


Have you tried equalTo(T)?

assertThat(someValue, equalTo(false));

I don't see that is(T) is deprecated - is(Class) is deprecated however.




回答2:


I had thought this was a transitive dependency issue, but it's really just a display issue in Eclipse where it marks the import as deprecated because one overloaded form is. The code should compile fine since the import will expose all forms.

The deprecated form has been removed from the source and will not exist in the next release (1.4).

Original Answer

The problem is that JUnit includes a set of Hamcrest classes in its JAR. You can use junit-dep.jar for now, but newer versions (4.9 and 4.10 so far) of JUnit omit them.




回答3:


It is said, use instanceOf for class matcher in the document.

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

is(IOException.class);

will be

is(instanceOf(IOException.class));

for example.



来源:https://stackoverflow.com/questions/12606196/what-is-the-alternative-to-using-the-deprecated-hamcrest-method-is

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!