Pergunta

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?

Foi útil?

Solução

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?

Outras dicas

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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top