Testes
23/09/2015 16:41
0
Boa tarde camaradas,

Montei o seguinte teste:

?@TestFor(Customer)
class CustomerTests extends Specification {

void "Test validation"(){
given:
mockForConstraintsTests Customer

when: "all fields are empty"
def customer = new Customer()
customer.name=''
customer.customerId=''
customer.ePortfolioUrl=''
customer.apiUid=''
customer.apiPwd=''

then: "validation should failed"
!customer.validate()
customer.hasErrors()

}
}



Gostaria de saber se na hora que rodo o test-app -unit ele gera um relatório com o os passos envolvidos na minha validação, do tipo:
- Test Validation
?- all fields are empty - validation should failed - OK


Valeu!
Tags: spock, testes


1
Oi Diego,
gera sim. Ele fica na pasta target/test-reports


0
Valeu Kico... acho que não me expressei bem, na verdade queria ir gerando dentro do relatório os passos do teste...sem ter que usar o print...mas muito obrigado pelo toque.
25/09/2015 12:58


1
Ah sim, entendi.

Neste caso, não conheço alguma diretiva que vá alimentando o relatório gerado, mas sei que se você colocar instruções do tipo println durante o seu teste, elas aparecem no relatório final de testes.


1
Valeu Kico..e mais uma, parabéns por seu livro, estou gostando muito dele...assumi um projeto de integração baseado em Grails...vou criar toda uma estrutura de testes .... acredito que seu livro vai me ajudar muito no projeto!
25/09/2015 15:11


1
Nossa Diego, que legal! Obrigado!

Curiosamente, adivinha no que trabalhamos esta semana aqui na itexto? Justamente na construção de uma API REST com Grails para um cliente que foi 100% testada e validada pelo framework.

Dica bacana. Não sei se conhece, lá vai uma ferramenta muito útil. http://swagger.io
Nos ajuda a escrever a documentação de todas as nossas APIs (inclusive a do Grails Brasil que devemos lançar em breve!)


1
Para documentação de APIs tem o apiary.io também, nunca usei esse "swagger.io", mas pela olhada por alto que dei nele o apiary parece melhor (pelo menos a visualização).
28/09/2015 08:40


0
Muito obrigado Kico e Dyego, vou dar uma olhada nos dois sites que vocês me enviaram. E pra automação de testes e testes propriamente ditos...vocês tem alguma dica? Peguei um sistema legado e estou descobrindo os pontos negociais, mas estou um pouco perdido ainda na estratégia que vou adotar para criar os testes, durante todos esses anos não criaram mais do que 5 testes para o sistema todo.
28/09/2015 10:03


1
Oi Diego,
no caso de sistemas legados o que costumo fazer é ir escrevendo os testes conforme novas alterações vão sendo necessárias a ser executadas no sistema.
Estes testes iniciais acabam por fornecer a base para que você consiga aumentar a base de testes do sistema e, com isto, ir aumentando sua cobertura.


0
É um ótimo approach, com certeza também vai ser adotado. Porém eles me pediram para criar testes para o que já está criado e também testes automatizados. Você tem alguma recomendação de literatura/curso ou algo que me sirva de norte em como devo abordar essa parte antiga dos testes?
28/09/2015 11:02


1
Minha recomendação é conseguir validar primeiro quais são as regras de negócio que precisam ser validadas e evitar a escrita de testes desnecessários com isto.
Como recomendação de leitura, seguem algumas:

O Wiki do BDD é uma leitura fantástica sobre Behaviour Driven Design, que muito provavelmente é o que você irá usar no Grails - http://behaviourdriven.org/ 
Ler de cabo a rabo a documentação do Spock (ajuda bastante, e não é uma leitura desagradável) - http://spockframework.github.io/spock/docs/1.0/index.html

Minha experiência com testes hoje mostra que o BDD é uma excelente abordagem, por que te ajuda a descrever melhor os comportamentos e, com isto, evitar a escrita de testes desnecessários


0
Senhores, voltando a esse tema...

Se eu quisesse automatizar criando uma tabela dentro do teste como abaixo:
      ??params.customerId         |   params.name         |   params.sharedSecret      |      params.ePortfolioUrl      |   params.validated
'1234' | 'test-customer' | 'shared_secret' | 'url' | false
'1234' | 'test-customer' | 'shared_secret' | 'url' | false
'1234' | 'test-customer' | 'shared_secret' | 'url' | false?
controller.validate()


Quando tento criar essa repetição ele não funciona, e me retorna:
java.lang.NullPointerException: Cannot invoke method or() on null object
29/09/2015 12:37


0
Oi Diego, 

confesso que não consegui entender este seu código de teste. Melhor abrir uma pergunta só para ele e lidarmos com a questão por lá. O que me diz? :)



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto