문제

How to test if class objects are equal using FEST assertThat(...) method?

Example:

import static org.fest.assertions.api.Assertions.assertThat; 

@Test
public void test() throws Exception {
    assertThat(findClass()).isEqualTo(Integer.class);
}

private Class<?> findClass() {
    // logic for finding a class object
    return String.class;
}

The above does not compile. The isEqualTo method complains. Is there some other method I should use to test equality between class objects?

도움이 되었습니까?

해결책

First of all you should use AssertJ; FEST is outdated by this package. But since AssertJ shares a similar syntax, the transition will be easy.

Second, well, with AssertJ, this works out of the box... This compiles for me:

// irrelevant code, then
    assertThat(findClass()).isEqualTo(Integer.class);
}

private Class<?> findClass()
{
    return Integer.class;
}

So, maybe you have another problem?

다른 팁

If you're using assertJ, the proper way to do this is with isInstanceOf() method. Always use the more specific assertJ matchers when possible. They're more semantic, and give better error results.

http://joel-costigliola.github.io/assertj/core/api/org/assertj/core/api/Assert.html#isInstanceOf(java.lang.Class)

    assertThat(object).isInstanceOf(Foo.class);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top