Est-il possible dans JUnit d'affirmer qu'un objet est une instance d'une classe? Pour diverses raisons, je souhaite vérifier le type d’objet dans mon test. Est-ce un type d'objet1 ou un type d'objet2?
Actuellement j'ai:
assertTrue(myObject instanceof Object1);
assertTrue(myObject instanceof Object2);
Cela fonctionne, mais je me demandais s’il existait un moyen plus expressif de le faire.
Par exemple, quelque chose comme:
assertObjectIsClass(myObject, Object1);
Je pourrais faire ceci:
assertEquals(myObject.class, Object1.getClass());
Existe-t-il une méthode d’assertion spécifique qui me permet de tester un type d’objet de manière plus élégante et plus 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 JNP Matchers.
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));
}
}
Puisque assertThat
qui était l'ancienne réponse est maintenant obsolète, je publie la solution correcte:
assertTrue(objectUnderTest instanceof TargetObject);
La documentation dit:
Cependant, la classe
org.junit.jupiter.Assertions
de JUnit Jupiter ne fournit pas de méthodeassertThat()
comme celle trouvée dans JUnit 4org.junit.Assert
class qui accepte un HamcrestMatcher
. Au lieu de cela, les développeurs sont encouragés à utiliser le support intégré pour les agents de correspondance fourni 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);
}
}
_