Spock框架:Teste Java通信产品

Questjáescreve testes hal algum tempo deve ter percebido que,para cada funcionalidade daaplicaçãoque queremos testar,temos que escrever ao menos umcenárioque cobre o“ caminho feliz” e um maiscenários。 Escrevemos muito maismaócódigonasuítede testes emcomparaçãoaocódigoqueseráexecutado de fato emprodução。

Tendo isso em vista,一种在铁皮制造厂中发挥作用的铁丝网,在机械加工中是很重要的。

卡米尼奥·费利斯(Caminho Feliz):根据项目的具体情况,使用客户的应用程序。 Caminho infeliz:请尽可能多地向客户提供证明(使用权)。

Neste artigo vou apresentar o Spock, um framework de testes para aplicações Java e Groovy, e como sua linguagem de especificação elegante e expressiva pode trazer maior produtividade no dia-a-dia do programador.

Analisaremos o Spock através das seguintes características:

  • 遗嘱的合法性参选资格考试Reportando falhasTestando ainteraçãoentre objetos:“嘲笑” e”存根”Trabalhando com优惠

Legibilidade e organização do teste

Praticamente todo teste que escrevemos (salvo algumas exceções) seguem as seguintes fases:

  1. 配置:ondeinicializamososdadosqueutilizaremosnoteste.执行力:ondeoobjetoqueestásendotestadoseráexecutado.Verificação:ondeavaliamososresultadosretornadosnafasedeexecução.

Vamos exemplificar essas fases escrevendo um cenário que testará uma funcionalidade fictícia de cadastro de usuário com JUnit 5:

《 Embora essas fases estejam》介绍了《毛利人的故事》,《 nem todas》,作为《 explanicita》中的《discanẽdismeẽmecanismosparadeixar》。 JUnit的成本没有增加,也没有理由。

Reescrevendo esse mesmo cenário com o Spock o teste fica bem mais legível e organizado, graças a linguagem Groovy (base do Spock) que nos permite escrever os métodos de forma declarativa e manter o corpo do teste mais simples e conciso. O Spock impõe a separação das fases ao estilo BDD, utilizando os blocos: “given”, “when” e “then”.

A fase de verificação também fica mais simples, pois utiliza os mesmos operadores de comparação do Java (removendo a necessidade de conhecer os métodos de “assertion”):

Dica: existe também o bloco “and” que pode ser usado para deixar a especificação do teste mais compreensível:

Versatilidade de parametrização do teste

证明书执行人或证明书执行人的身份,并在法院生效。

O Spock解决了有问题的旅行,“哪里onde podemos证明人uma lista de dados睾丸的效用率高。

No exemplo abaixo utilizamos o “Data Tables” para fornecer os dados de entrada ao método do teste. A primeira linha da tabela (header) declara o nome das variáveis que utilizaremos no teste, e as demais linhas correspondem ao valor dessas variáveis. Para cada linha o método do teste será executado uma vez.

组织形式或形式的组织;组织形式的组织;组织机构;组织机构;组织机构 fazendo com que o teste sirva como umadocumentaçãodo funcionamento do objeto sob teste。

O Spock utiliza o conceito de “Data Driven Testing”, que fornece diversas formas de gerarmos dados de entrada, dando mais flexibilidade ao programador durante a escrita dos testes:

Reportando falhas

没有关于“哪里”的事前证明书(linha 9):

Dica: prefira utilizar o bloco “expect” quando a execução e a validação podem ser descritas numa única fase.

执行人或执行人不得再提出任何要求:

Com Spock é fácil de identificar que a falha ocorreu na segunda interação, mas podemos deixar essa informação ainda mais explícita utilizando a anotação de “@Unroll”:

不能在任何情况下使用惯用的惯用语“#”在任何情况下都不能使用睾丸。 执行新手条款:

身份相同的大事记,负责人是大法官。

Testando a interação entre objetos

Mocking

Nemsódeverificaçãode estado vivem nossos睾丸; 从对象到对象的探究,从对象到对象的所有方面都必须遵守。

Nesse tipo de teste (também conhecido como “Interaction Tests” ou “Collaboration Test”) utilizamos a técnica de “Mock” (imitar) para conseguirmos analisar as interações entre os objetos sob teste.

A criação de “Mocks é muito simples e pode ser feita de duas formas:

O utilizando sintaxe Java:

Vejamos o uso do“嘲笑” mais detalhadamente no exemplo abaixo(linhas 14,15):

Diferente dos exemplos anteriors,no quais verificamos o estado do objeto sob teste(ex:user.getName()==名称); nosso interesse agoeraésaber seapósfaseexecução(“什么时候”)o objeto“发行人”“作为必要性的现实”,“ colaboradores”订户”。

塞维利亚的无国界医生组织,没有任何经验证明”订户”,seja chamadoatravésdométodo“接收”,“接受推荐”你好”伊索·伊索·奥索拉·阿佩纳斯·韦兹。

EssasrestriçõesestãoOrganizadas no Spock da seguinte形式:

  1. 红衣主教雷斯特里昂德阿尔沃里斯托雷昂德梅多多反对辩论

Obs: todas as variações de restrição podem ser vistas na documentação do Spock.

Stubbing

Como podemos testar um objeto,独立形式,全权委托人结果是否在合作伙伴中存在?

预先定义了可协作的控制对象和最终定义的可替代对象,作为可重复使用的可替代对象。

Chamamos essa técnica de “Stub”, onde substituímos o objeto real por um objeto que será alimentado com as entradas que desejamos utilizar no nosso testes.

Alteramos o nosso exemplo de teste que agora utiliza o “Stubbing” para definir um resultado ao método “receive” da interface “Subscriber” (linha 22). Dessa forma podemos validar não apenas a interação mas também o retorno esperado:

作为Interaçõescom“存根”以国际交流的形式传播”嘲弄”,符合demonstrado abaixo的要求:

Mais uma vez, todas as variações de interações pode ser vistas na documentação do Spock, especialmente a parte que trata da combinação de “中号ocking” e “Stubbing.

Trabalhando com exceções

由fim,porémnãomenos essentiale,precisamos ser capazes devalidar quando o objeto sob teste develançarumaexceção组成。

Geralmente,我们的遗嘱证明书,形式:

1 - Validar a ocorrência de uma exceção (“Exception Conditions”).

2 - Simular uma exceção como efeito colateral (utilizando “Stubs”).

Conclusão

Ainda como pontos positivos do Spock vale listar:

  • Spock disponibiliza um “Web Console” onde podemos experimentar o seu funcionamento.
  • Projeto de exemplo mostrando como configurar com: Ant, Gradle e Maven.
  • Ótima documentação, embasada em conceitos do Agile e BDD.
  • O framework de “Mock” do Spock é integrado, ou seja, não é preciso importar outras bibliotecas (embora também seja possível utilizá-las em conjunto com o Spock).
  • Integração com o Spring.

Nem tudo são flores. Importante ressaltar que, em comparação, o JUnit 5 ganha nos seguintes pontos:

  • Java 100%实施。Melhor compatibilidade com是últimasversdaes da JDK。Melhorintegraçãocom作为IDE。

Enfim,利用Spock pela primeira veznãolarguei mais; 产地不动产,产地证,产地证和通行证。

推荐人:

  • Why I prefer Spock over JUnit by Bouke Nijhuis (YouTube)
  • Spock vs JUnit 5 - Clash of the Titans by Marcin Zajaczkowski (YouTube, Slides)
  • XUnit Test Patterns - Refactoring Test Code by Gerard Meszaros (Site, Book)

from: https://dev.to//mariorez/spock-framework-teste-java-com-mais-produtividade-4ibn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值