Groovy - Teste de Unidade
A unidade fundamental de um sistema orientado a objetos é a classe. Portanto, o teste de unidade consiste em testar dentro de uma classe. A abordagem adotada é criar um objeto da classe em teste e usá-lo para verificar se os métodos selecionados são executados conforme o esperado. Nem todos os métodos podem ser testados, pois nem sempre é prático testar cada coisa. Mas o teste de unidade deve ser conduzido para métodos essenciais e críticos.
JUnit é uma estrutura de teste de código aberto que é o padrão de mercado aceito para o teste de unidade automatizado de código Java. Felizmente, a estrutura JUnit pode ser facilmente usada para testar classes Groovy. Tudo o que é necessário é estender a classe GroovyTestCase que faz parte do ambiente Groovy padrão. A classe de caso de teste Groovy é baseada no caso de teste Junit.
Escrevendo um Caso de Teste Simples Junit
Vamos supor que temos a seguinte classe definida em um arquivo de classe de aplicativo -
class Example {
static void main(String[] args) {
Student mst = new Student();
mst.name = "Joe";
mst.ID = 1;
println(mst.Display())
}
}
public class Student {
String name;
int ID;
String Display() {
return name +ID;
}
}
A saída do programa acima é fornecida abaixo.
Joe1
E agora suponha que quiséssemos escrever um caso de teste para a classe Aluno. Um caso de teste típico seria semelhante ao mostrado abaixo. Os seguintes pontos devem ser observados sobre o código a seguir -
- A classe de caso de teste estende a classe GroovyTestCase
- Estamos usando a instrução assert para garantir que o método Display retorne a string correta.
class StudentTest extends GroovyTestCase {
void testDisplay() {
def stud = new Student(name : 'Joe', ID : '1')
def expected = 'Joe1'
assertToString(stud.Display(), expected)
}
}
The Groovy Test Suite
Normalmente, à medida que o número de testes de unidade aumenta, fica difícil continuar executando todos os casos de teste um por um. Portanto, o Groovy fornece um recurso para criar um conjunto de testes que pode encapsular todos os casos de teste em uma unidade lógica. O seguinte codesnippet mostra como isso pode ser alcançado. As seguintes coisas devem ser observadas sobre o código -
O GroovyTestSuite é usado para encapsular todos os casos de teste em um.
No exemplo a seguir, estamos assumindo que temos dois arquivos de caso de teste, um chamado StudentTest e o outro é EmployeeTest que contém todos os testes necessários.
import groovy.util.GroovyTestSuite
import junit.framework.Test
import junit.textui.TestRunner
class AllTests {
static Test suite() {
def allTests = new GroovyTestSuite()
allTests.addTestSuite(StudentTest.class)
allTests.addTestSuite(EmployeeTest.class)
return allTests
}
}
TestRunner.run(AllTests.suite())