Question

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?

Was it helpful?

Solution

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?

OTHER TIPS

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);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top