Difference between revisions of "Tópicos sobre escrita de testes com JUnit"

From Wiki**3

(Exemplos)
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
{{NAVPO}}
 
{{NAVPO}}
 +
{{TOCright}}
 
Quando se produz um programa, é importante garantir que funciona de acordo com as especificações. É, no entanto, difícil de dar esta garantia, especialmente em programas complexos. Com o propósito de simplificar a tarefa, os testes podem ser realizados modularmente, i.e., testanto a aplicação por partes. Assim, se todos os módulos se comportam individualmente segundo as especificações, é mais simples de produzir testes que avaliem o comportamento da aplicação como um todo.
 
Quando se produz um programa, é importante garantir que funciona de acordo com as especificações. É, no entanto, difícil de dar esta garantia, especialmente em programas complexos. Com o propósito de simplificar a tarefa, os testes podem ser realizados modularmente, i.e., testanto a aplicação por partes. Assim, se todos os módulos se comportam individualmente segundo as especificações, é mais simples de produzir testes que avaliem o comportamento da aplicação como um todo.
  
Line 12: Line 13:
 
== Exemplos ==
 
== Exemplos ==
  
* [[Toy Example (JUnit 3.8.x)]]
+
* [[Tópicos sobre escrita de testes com JUnit/Toy Example (JUnit 3.8.x)|Toy Example (JUnit 3.8.x)]]
 
 
 
* [[Tópicos sobre escrita de testes com JUnit/Testing the blobbiness of blobs|Testing the blobbiness of blobs]] - when does a blob blob a blob?
 
* [[Tópicos sobre escrita de testes com JUnit/Testing the blobbiness of blobs|Testing the blobbiness of blobs]] - when does a blob blob a blob?
 
* [[Tópicos sobre escrita de testes com JUnit/Random bombs|Random bombs]] - unreliable bombs that may or may not go off.
 
* [[Tópicos sobre escrita de testes com JUnit/Random bombs|Random bombs]] - unreliable bombs that may or may not go off.
Line 19: Line 19:
 
== Exercícios ==
 
== Exercícios ==
  
* [[Unit Testing with JUnit/Album (JUnit example)|Album]] - an album and its cards
+
* [[Tópicos sobre escrita de testes com JUnit/Album (JUnit example)|Album]] - an album and its cards
 +
* [[Tópicos sobre escrita de testes com JUnit/Porta AND binária|Porta AND binária]] - uma porta lógica
  
 
== Como Obter ==
 
== Como Obter ==

Latest revision as of 14:01, 19 November 2015

Programação com Objectos
Introduction
Creation and Destruction
Inheritance & Composition
Abstraction & Polymorphism
Code Organization
Java Topics
Inner Classes
Enumerations
Data Structures
Exceptions
Input/Output
RTTI
Other Topics
JUnit Tests
UML Topics
Design Patterns
"Simple" Factory
Composite & Visitor
Command
Strategy & State
Template Method
Observer
Abstract Factory
Decorator & Adapter
Façade (aka Facade)

Quando se produz um programa, é importante garantir que funciona de acordo com as especificações. É, no entanto, difícil de dar esta garantia, especialmente em programas complexos. Com o propósito de simplificar a tarefa, os testes podem ser realizados modularmente, i.e., testanto a aplicação por partes. Assim, se todos os módulos se comportam individualmente segundo as especificações, é mais simples de produzir testes que avaliem o comportamento da aplicação como um todo.

JUnit é uma biblioteca que simplifica e sistematiza a produção de testes para cada um dos componentes (as unidades) da aplicação. Embora seja uma biblioteca Java, o princípio é geral e existem versões para outras linguagens (cppunit, por exemplo, para C++; phpunit, para PHP, etc.).

Na prática, os testes executam como asserções sobre expectativas, i.e., cada bateria de teste ou teste individual verifica se uma dada propriedade é verificada pelas instâncias das classes em teste (ou pelos resultados das operações sobre essas instâncias). As propriedades podem ser booleanas (verdadeiro/falso), igualdade, etc.

A execução pode ser realizada pelos processos normais em Java, por recurso a um método main ou podem ser utilizadas classes específicas para execução de testes (runners), que na forma mais simples e directa executam todos os métodos cujo nome comece por “test”.

Numa classe de teste, podem ainda ser definidos os métodos setUp e tearDown que, respectivamente, preparam a execução de cada teste e executam procedimentos de limpeza após cada teste.

Exemplos

Exercícios

Como Obter