unit tutorial tests test make how examples example español create java unit-testing junit

java - tutorial - junit netbeans



Afirmar que un objeto es un tipo específico (3)

Solución para JUnit 5

La documentación dice:

Sin embargo, la clase org.junit.jupiter.Assertions JUnit Jupiter no proporciona un método assertThat() como el que se encuentra en la clase org.junit.Assert JUnit 4, que acepta un Hamcrest Matcher . En su lugar, se recomienda a los desarrolladores que utilicen la compatibilidad integrada para los adaptadores proporcionados por bibliotecas de afirmación de terceros.

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

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

¿Es posible en JUnit afirmar que un objeto es una instancia de una clase? Por diversas razones, tengo un objeto en mi prueba que quiero verificar el tipo de. ¿Es un tipo de Object1 o un tipo de Object2?

Actualmente tengo:

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

Esto funciona, pero me preguntaba si existe una forma más expresiva de hacerlo.

Por ejemplo, algo como:

assertObjectIsClass(myObject, Object1);

Yo podría hacer esto:

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

¿Existe un método de afirmación específico que me permita probar un tipo de objeto de una manera más elegante y fluida?


Como assertThat que era la respuesta anterior, ahora está en desuso, estoy publicando la solución correcta:

assertTrue(objectUnderTest instanceof TargetObject);


Puede usar el método assertThat y los Matchers que vienen con JUnit.

Echa un vistazo a este enlace que describe un poco sobre JUnit Matchers.

Ejemplo:

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

Prueba:

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