#Play - Testes
Sua aplicação Play pode ser testada em três níveis básicos:
- UNIDADE
- FUNCIONAL
- INTERFACE / BROWSER
Utilização
-
todas as suas classes de teste devem estar na pasta 'test' gerada pelo play
-
na raiz da sua aplicação play digite o comando
$>play test
//ou então para executar determinado teste.
$>play "test-only <sua classe de testes ou seu namespace>"
// rodar a classe de testes IndexViewTest do pacote funcional
$>play "test-only funcional.IndexViewTest"
// rodar todas as classes de teste do pacote funcional
$>play "test-only funcional.*"
A Maneira padrão de testar sua apicação, com a ajuda do JUnit
Dicas
- Conter um 'extends AbstractTest' para testar com banco de dados
- AbstractTest.java
Exemplo:
// Sua unidade a ser testada, geralmente algum Model
public class UnidadeTest extends AbstractTest{
import org.junit.*;
import play.mvc.*;
import play.test.*;
import play.libs.F.*;
import static play.test.Helpers.*;
import static org.fest.assertions.Assertions.*;
// é também uma boa prática guiar seus testes pelo comportamento
// da entidade
@Test
public void comportamentoDaUnidadeTest() {
int a = 1 + 1;
assertThat(a).isEqualTo(2);
// usando asserts para verificação
}
...
}
-exemplo completo ##Testes Funcionais
Testa o comportamento externo do software
Dicas
- Conter um 'extends AbstractTest' para testar com BD e outras transações
- AbstractTest.java
Nesse tipo de teste são testados(as):
- Template (View)
@Test
public void indexTemplate() {
String title = "Your new application is ready.";
// guarda o resultado da renderização do index.scala.html
// passado como parametro 'title'
Content html = index.render(title);
//verifica se o html contém a determimnada string
assertThat(contentAsString(html)).contains(title);
}
- Controllers
@Test
public void callBooks() {
// guarda o resultado da chamada ao método books() do controller Application
Result result = callAction(controllers.routes.ref.Application.books(),
fakeRequest());
assertThat(status(result)).isEqualTo(Http.Status.OK);
assertThat(charset(result)).isEqualTo("utf-8");
assertThat(contentAsString(result)).contains("0 livro(s)");
}
- Routes
o arquivo de routes pode ser visto aqui
// testa a route inicial, no caso "/"
@Test
public void rootRoute() {
// guarda o resultado da requisição à url "/"
Result result = Helpers.route(new FakeRequest(GET, "/"));
// testa se a resultado da requisição à url "/" não é nula
assertThat(result).isNotNull();
}
- Documentação do play sobre testes funcionais aqui
##Testes de Interface
Utiliza de testes automaticos, uma das principais ferramentas para esse tipo de teste é o selenium
Utilizem o Piazza!