سؤال

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