JUnit - API
O pacote mais importante no JUnit é junit.framework, que contém todas as classes principais. Algumas das classes importantes são as seguintes -
Sr. Não. | Nome da classe | Funcionalidade |
---|---|---|
1 | Afirmar | Um conjunto de métodos de declaração. |
2 | Caso de teste | Um caso de teste define o dispositivo para executar vários testes. |
3 | Resultado do teste | Um TestResult coleta os resultados da execução de um caso de teste. |
4 | Suíte de teste | Um TestSuite é um composto de testes. |
Classe Assert
A seguir está a declaração para org.junit.Assert classe -
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 assertFalse(boolean condition) Verifica se uma condição é falsa. |
3 | void assertNotNull(Object object) Verifica se um objeto não é nulo. |
4 | void assertNull(Object object) Verifica se um objeto é nulo. |
5 | void assertTrue(boolean condition) Verifica se uma condição é verdadeira. |
6 | void fail() Falha em um teste sem mensagem. |
Vamos usar alguns dos métodos mencionados acima em um exemplo. Crie um arquivo de classe java chamado TestJunit1.java emC:\>JUNIT_WORKSPACE.
import org.junit.Test;
import static org.junit.Assert.*;
public class TestJunit1 {
@Test
public void testAdd() {
//test data
int num = 5;
String temp = null;
String str = "Junit is working fine";
//check for equality
assertEquals("Junit is working fine", str);
//check for false condition
assertFalse(num > 6);
//check for not null value
assertNotNull(temp);
}
}
Em seguida, crie um arquivo de classe java chamado TestRunner1.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 TestRunner1 {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(TestJunit1.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 TestJunit1.java TestRunner1.java
Agora execute o Test Runner, que executará o caso de teste definido na classe Test Case fornecida.
C:\JUNIT_WORKSPACE>java TestRunner1
Verifique a saída.
true
Classe TestCase
A seguir está a declaração para org.junit.TestCase classe -
public abstract class TestCase extends Assert implements Test
Um caso de teste define o dispositivo para executar vários testes. Alguns dos métodos importantes deTestCase classe são as seguintes -
Sr. Não. | Métodos e Descrição |
---|---|
1 | int countTestCases() Conta o número de casos de teste executados por execução (resultado do TestResult). |
2 | TestResult createResult() Cria um objeto TestResult padrão. |
3 | String getName() Obtém o nome de um TestCase. |
4 | TestResult run() Um método conveniente para executar este teste, coletando os resultados com um objeto TestResult padrão. |
5 | void run(TestResult result) Executa o caso de teste e coleta os resultados em TestResult. |
6 | void setName(String name) Define o nome de um TestCase. |
7 | void setUp() Configura o aparelho, por exemplo, abre uma conexão de rede. |
8 | void tearDown() Derruba o aparelho, por exemplo, fecha uma conexão de rede. |
9 | String toString() Retorna uma representação de string do caso de teste. |
Vamos usar alguns dos métodos mencionados acima em um exemplo. Crie um arquivo de classe java chamadoTestJunit2.java em C: \> JUNIT_WORKSPACE.
import junit.framework.TestCase;
import org.junit.Before;
import org.junit.Test;
public class TestJunit2 extends TestCase {
protected double fValue1;
protected double fValue2;
@Before
public void setUp() {
fValue1 = 2.0;
fValue2 = 3.0;
}
@Test
public void testAdd() {
//count the number of test cases
System.out.println("No of Test Case = "+ this.countTestCases());
//test getName
String name = this.getName();
System.out.println("Test Case Name = "+ name);
//test setName
this.setName("testNewAdd");
String newName = this.getName();
System.out.println("Updated Test Case Name = "+ newName);
}
//tearDown used to close the connection or clean up activities
public void tearDown( ) {
}
}
Em seguida, crie um arquivo de classe java chamado TestRunner2.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(TestJunit2.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 TestJunit2.java TestRunner2.java
Agora execute o Test Runner, que executará o caso de teste definido na classe Test Case fornecida.
C:\JUNIT_WORKSPACE>java TestRunner2
Verifique a saída.
No of Test Case = 1
Test Case Name = testAdd
Updated Test Case Name = testNewAdd
true
Classe TestResult
A seguir está a declaração para org.junit.TestResult classe -
public class TestResult extends Object
Um TestResult coleta os resultados da execução de um caso de teste. É uma instância do padrão Parâmetro de coleta. A estrutura de teste distingue entre falhas e erros. Uma falha é antecipada e verificada com afirmações. Erros são problemas imprevistos, como ArrayIndexOutOfBoundsException. Alguns dos métodos importantes deTestResult classe são as seguintes -
Sr. Não. | Métodos e Descrição |
---|---|
1 | void addError(Test test, Throwable t) Adiciona um erro à lista de erros. |
2 | void addFailure(Test test, AssertionFailedError t) Adiciona uma falha à lista de falhas. |
3 | void endTest(Test test) Informa o resultado de que um teste foi concluído. |
4 | int errorCount() Obtém o número de erros detectados. |
5 | Enumeration<TestFailure> errors() Retorna uma Enumeração para os erros. |
6 | int failureCount() Obtém o número de falhas detectadas. |
7 | void run(TestCase test) Executa um TestCase. |
8 | int runCount() Obtém o número de testes de execução. |
9 | void startTest(Test test) Informa o resultado de que um teste será iniciado. |
10 | void stop() Marca que a execução do teste deve parar. |
Crie um arquivo de classe java chamado TestJunit3.java em C: \> JUNIT_WORKSPACE.
import org.junit.Test;
import junit.framework.AssertionFailedError;
import junit.framework.TestResult;
public class TestJunit3 extends TestResult {
// add the error
public synchronized void addError(Test test, Throwable t) {
super.addError((junit.framework.Test) test, t);
}
// add the failure
public synchronized void addFailure(Test test, AssertionFailedError t) {
super.addFailure((junit.framework.Test) test, t);
}
@Test
public void testAdd() {
// add any test
}
// Marks that the test run should stop.
public synchronized void stop() {
//stop the test here
}
}
Em seguida, crie um arquivo de classe java chamado TestRunner3.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 TestRunner3 {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(TestJunit3.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 TestJunit3.java TestRunner3.java
Agora execute o Test Runner, que executará o caso de teste definido na classe Test Case fornecida.
C:\JUNIT_WORKSPACE>java TestRunner3
Verifique a saída.
true
Classe TestSuite
A seguir está a declaração para org.junit.TestSuite classe:
public class TestSuite extends Object implements Test
Um TestSuite é um composto de testes. Ele executa uma coleção de casos de teste. Alguns dos métodos importantes deTestSuite classe são as seguintes -
Sr. Não. | Métodos e Descrição |
---|---|
1 | void addTest(Test test) Adiciona um teste ao conjunto. |
2 | void addTestSuite(Class<? extends TestCase> testClass) Adiciona os testes da classe dada ao conjunto. |
3 | int countTestCases() Conta o número de casos de teste que serão executados por este teste. |
4 | String getName() Retorna o nome da suíte. |
5 | void run(TestResult result) Executa os testes e coleta seu resultado em um TestResult. |
6 | void setName(String name) Define o nome da suíte. |
7 | Test testAt(int index) Retorna o teste no índice fornecido. |
8 | int testCount() Retorna o número de testes neste conjunto. |
9 | static Test warning(String message) Retorna um teste que falhará e registrará uma mensagem de aviso. |
Crie um arquivo de classe java chamado JunitTestSuite.java em C: \> JUNIT_WORKSPACE para criar o conjunto de testes.
import junit.framework.*;
public class JunitTestSuite {
public static void main(String[] a) {
// add the test's in the suite
TestSuite suite = new TestSuite(TestJunit1.class, TestJunit2.class, TestJunit3.class );
TestResult result = new TestResult();
suite.run(result);
System.out.println("Number of test cases = " + result.runCount());
}
}
Compile as classes do conjunto de testes usando javac.
C:\JUNIT_WORKSPACE>javac JunitTestSuite.java
Agora execute o Test Suite.
C:\JUNIT_WORKSPACE>java JunitTestSuite
Verifique a saída.
No of Test Case = 1
Test Case Name = testAdd
Updated Test Case Name = testNewAdd
Number of test cases = 3