JUnit - Usando Asserção
Afirmação
Todas as asserções estão na classe Assert.
public class Assert extends java.lang.Object
Esta classe fornece um conjunto de métodos de asserção, úteis para escrever testes. Apenas as afirmações com falha são registradas. Alguns dos métodos importantes da classe Assert são os seguintes -
Sr. Não. | Métodos e Descrição |
---|---|
1 | void assertEquals(boolean expected, boolean actual) Verifica se dois primitivos / objetos são iguais. |
2 | void assertTrue(boolean condition) Verifica se uma condição é verdadeira. |
3 | void assertFalse(boolean condition) Verifica se uma condição é falsa. |
4 | void assertNotNull(Object object) Verifica se um objeto não é nulo. |
5 | void assertNull(Object object) Verifica se um objeto é nulo. |
6 | void assertSame(object1, object2) O método assertSame () testa se duas referências de objeto apontam para o mesmo objeto. |
7 | void assertNotSame(object1, object2) O método assertNotSame () testa se duas referências de objeto não apontam para o mesmo objeto. |
8 | void assertArrayEquals(expectedArray, resultArray); O método assertArrayEquals () testará se dois arrays são iguais. |
Vamos usar alguns dos métodos mencionados acima em um exemplo. Crie um arquivo de classe java chamadoTestAssertions.java em C: \> JUNIT_WORKSPACE.
import org.junit.Test;
import static org.junit.Assert.*;
public class TestAssertions {
@Test
public void testAssertions() {
//test data
String str1 = new String ("abc");
String str2 = new String ("abc");
String str3 = null;
String str4 = "abc";
String str5 = "abc";
int val1 = 5;
int val2 = 6;
String[] expectedArray = {"one", "two", "three"};
String[] resultArray = {"one", "two", "three"};
//Check that two objects are equal
assertEquals(str1, str2);
//Check that a condition is true
assertTrue (val1 < val2);
//Check that a condition is false
assertFalse(val1 > val2);
//Check that an object isn't null
assertNotNull(str1);
//Check that an object is null
assertNull(str3);
//Check if two object references point to the same object
assertSame(str4,str5);
//Check if two object references not point to the same object
assertNotSame(str1,str3);
//Check whether two arrays are equal to each other.
assertArrayEquals(expectedArray, resultArray);
}
}
Em seguida, crie um arquivo de classe java chamado TestRunner.java em C: \> JUNIT_WORKSPACE para executar caso (s) de teste.
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner2 {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(TestAssertions.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
Compile o caso de teste e as classes Test Runner usando javac.
C:\JUNIT_WORKSPACE>javac TestAssertions.java TestRunner.java
Agora execute o Test Runner, que executará o caso de teste definido na classe Test Case fornecida.
C:\JUNIT_WORKSPACE>java TestRunner
Verifique a saída.
true
Anotação
As anotações são como metatags que você pode adicionar ao seu código e aplicá-las a métodos ou em classe. Essas anotações em JUnit fornecem as seguintes informações sobre métodos de teste -
- quais métodos serão executados antes e depois dos métodos de teste.
- quais métodos são executados antes e depois de todos os métodos e.
- quais métodos ou classes serão ignorados durante a execução.
A tabela a seguir fornece uma lista de anotações e seu significado no JUnit -
Sr. Não. | Anotação e descrição |
---|---|
1 | @Test A anotação Test informa ao JUnit que o método public void ao qual está anexado pode ser executado como um caso de teste. |
2 | @Before Vários testes precisam de objetos semelhantes criados antes de serem executados. Anotar um método void público com @Before faz com que esse método seja executado antes de cada método de teste. |
3 | @After Se você alocar recursos externos em um método Before, precisará liberá-los após a execução do teste. Anotar um método void público com @After faz com que esse método seja executado após o método Test. |
4 | @BeforeClass Anotar um método void estático público com @BeforeClass faz com que ele seja executado uma vez antes de qualquer um dos métodos de teste na classe. |
5 | @AfterClass Isso executará o método após a conclusão de todos os testes. Isso pode ser usado para realizar atividades de limpeza. |
6 | @Ignore A anotação Ignorar é usada para ignorar o teste e esse teste não será executado. |
Crie um arquivo de classe java chamado JunitAnnotation.java em C: \> JUNIT_WORKSPACE para testar a anotação.
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
public class JunitAnnotation {
//execute before class
@BeforeClass
public static void beforeClass() {
System.out.println("in before class");
}
//execute after class
@AfterClass
public static void afterClass() {
System.out.println("in after class");
}
//execute before test
@Before
public void before() {
System.out.println("in before");
}
//execute after test
@After
public void after() {
System.out.println("in after");
}
//test case
@Test
public void test() {
System.out.println("in test");
}
//test case ignore and will not execute
@Ignore
public void ignoreTest() {
System.out.println("in ignore test");
}
}
Em seguida, crie um arquivo de classe java chamado TestRunner.java em C: \> JUNIT_WORKSPACE para executar anotações.
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class TestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(JunitAnnotation.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
Compile o caso de teste e as classes Test Runner usando javac.
C:\JUNIT_WORKSPACE>javac JunitAnnotation.java TestRunner.java
Agora execute o Test Runner, que executará o caso de teste definido na classe Test Case fornecida.
C:\JUNIT_WORKSPACE>java TestRunner
Verifique a saída.
in before class
in before
in test
in after
in after class
true