Assert un object est un type spécifique

Est-il possible dans JUnit d’affirmer qu’un object est une instance d’une classe? Pour diverses raisons, j’ai un object dans mon test que je veux vérifier le type de. Est-ce un type d’object1 ou un type d’object2?

Actuellement j’ai:

assertTrue(myObject instanceof Object1); assertTrue(myObject instanceof Object2); 

Cela fonctionne, mais je me demandais s’il y avait une façon plus expressive de le faire.

Par exemple, quelque chose comme:

 assertObjectIsClass(myObject, Object1); 

Je pourrais faire ça:

 assertEquals(myObject.class, Object1.getClass()); 

Existe-t-il une méthode d’affirmation spécifique qui me permet de tester un type d’object d’une manière plus élégante et fluide?

Vous pouvez utiliser la méthode assertThat et les Matchers fournis avec JUnit.

Jetez un coup d’œil à ce lien qui décrit un peu les joncs JUnit.

Exemple:

 public class BaseClass { } public class SubClass extends BaseClass { } 

Tester:

 import org.junit.Test; import static org.hamcrest.CoreMatchers.instanceOf; import static org.junit.Assert.assertThat; /** * @author maba, 2012-09-13 */ public class InstanceOfTest { @Test public void testInstanceOf() { SubClass subClass = new SubClass(); assertThat(subClass, instanceOf(BaseClass.class)); } } 

Comme assertThat qui était l’ancienne réponse est maintenant obsolète, je publie la solution correcte:

assertTrue(objectUnderTest instanceof TargetObject);

Solution pour JUnit 5

La documentation dit:

Cependant, la classe org.junit.jupiter.Assertions JUnit Jupiter ne fournit pas de méthode assertThat() comme celle trouvée dans la classe org.junit.Assert JUnit 4 qui accepte un Matcher Hamcrest. Au lieu de cela, les développeurs sont encouragés à utiliser la prise en charge intégrée des matchers fournis par les bibliothèques d’assertions tierces.

Exemple pour Hamcrest :

 import static org.hamcrest.CoreMatchers.instanceOf; import static org.hamcrest.MatcherAssert.assertThat; import org.junit.jupiter.api.Test; class HamcrestAssertionDemo { @Test void assertWithHamcrestMatcher() { SubClass subClass = new SubClass(); assertThat(subClass, instanceOf(BaseClass.class)); } } 

Exemple pour AssertJ :

 import static org.assertj.core.api.Assertions.assertThat; import org.junit.jupiter.api.Test; class AssertJDemo { @Test void assertWithAssertJ() { SubClass subClass = new SubClass(); assertThat(subClass).isInstanceOf(BaseClass.class); } }