222 votes

Affirmer qu'un objet est un type spécifique

Est-il possible dans junit pour affirmer qu'un objet est une instance d'une classe? Pour diverses raisons, j'ai un objet dans mon test que je veux vérifier le type de. Est-il un type de Objet1 ou un type de Objet2?

Actuellement, j'ai

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

Cela fonctionne, mais je me demandais si il n'y a plus expressif moyen de le faire.

Par exemple quelque chose comme

assertObjectIsClass(myObject, Object1);

Je pourrais le faire

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

Parfois, je pense que junit pourrait être plus expressif. Je pense que assertEquals devrait vraiment être asssertExpectedEqualsActual(...) bien que je peux voir argurments les deux méthodes les plus courtes, les noms de méthode.

Ma question est vraiment:

Est-t-il une méthode assert qui me permet de tester un type d'un objet.

Merci

280voto

maba Points 15744

Vous pouvez utiliser l' assertThat méthode et le Rapprochement qui vient avec JUnit.

Jetez un oeil à ce lien qui explique un peu plus sur la JUnit de Rapprochement.

Exemple:

public class BaseClass {
}

public class SubClass extends BaseClass {
}

Test:

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));
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X