Biblioteca para gerar Testes Automatizados

Boa noite Pessoal,

Estou aqui para pedia uma ajuda a comunidade.

Estou desenvolvendo uma biblioteca para geração de testes automatizados por annotations como TCC da minha faculdade, e uma das partes da conclusão do meu TCC é disponibilizar este projetos para que a comunidade teste, e opine respondendo um questionário.

Introduzindo rapidamente o que a biblioteca realiza, o objetivo consiste em gerar testes automatizados dos métodos das classes de negócio à partir da declarações de annotations que serão responsáveis por gerar uma classe de testes automatizado no padrão de escrita do JUnit e Mockito para escrita de mock objects.

Ela ainda está um pouco limitada, no que se diz respeito a alguns cenários de geração. Mas a intenção é validar a ideia em si.

Peço por gentileza, se tiverem uns 10 min para testar e responderem o questionário ficaria muito grato!
Vocês poderão encontrar este questionário na página do projeto.

Segue os links do projeto.

Apresentação e Documentação: http://rgoncalves94.github.io/jtcgen/

Projeto de Exemplo: https://github.com/rgoncalves94/jtcgen-example (um pequeno ambiente de facil acesso para testar a biblioteca.)

Caso encontrem algum problema na utilização ou dúvida estou à disposição.

Agradeço desde já!

vamos la

isto parece interessante, ainda mais se vc puder colocar varios:

@TestEquals({“150.05”, “400.0”})

agora isso

Test(“setup([‘User’, 5000.0, {c:‘TipoContratacao@getSigla()@getNome()’, v:[‘CLT’, ‘Contrato’]}]).parameter().eq(250.0)”)

é confuso. demais. é dificil de ler, mesmo com a documentação.

coisas que eu sinto falta:

  1. poder especificar timeout
  2. poder especificar uma exception

ao inves de

Test(“setup([‘User’, 5000.0, {c:‘TipoContratacao@getSigla()@getNome()’, v:[‘CLT’, ‘Contrato’]}]).parameter().eq(250.0)”)

poderia ser algo como @Test(setup="",mock="",assert="") mas enfim, acho que com um pouco de trabalho, vai.

seu framework me lembra o seguinte: design by contract

https://deanwampler.github.io/contract4j/example/

que é uma ideia diferente, mas contem similaridades: vc quer especificar que para um dado input vai rolar um output. vou tentar responder o questionario depois

Olá peczenyj,

Obrigado por postar sua opinião, fico feliz por recebe-lá.

Você falou um ponto bacana em aceitar annotations repetidas, irei considerar como novas funcionalidades.

E e também considerarei sobre a legibilidade. Realmente esta parte do projeto foi a mais difícil de se pensar em como resolver. Pois quando o método depende de outras classes é preciso inicializa-la, atribuir valores aos métodos que serão invocados para que seja possível passa-lo como parâmetro ao método que será testado. Creio que isso dificultou na legibilidade. Mas acredito que tenha outros caminhos á se explorar para que possa deixar de forma mais legível a escrita nesses casos.

Se tiver alguma ideia também ficarei feliz em recebê-la!

Ah, e vou olhar o contract4j!

Agradeço muito sua resposta, pois ela só teve a agregar.

E obrigado também pelo interesse em responder o questionário!

legibilidade vem com experiencia e diferente de pessoa para pessoa.

lembrei que existe uma antiga forma de emular anotacoes que é escrever em uma pseudo linguagem e colocar em comentarios, mas ai vc precisa parsear o arquivo em si e isso é doentio (hehe). acho que a galera de PHP fazia ( ou ainda faz ) isso.

em D vc tem uma sessão unittest e vc coloca o teste dentro do seu codigo. acho que vale a pena falar sobre isso.

eu não vi mas vc pode tentar testar o seu framework usando o framework, algo como um ‘bootstrap’ hehe

Achei similar até esse unittest com o que o framework realiza.

Conversando com vc e o pessoal de outros fórum acabei pensando em talvez fazer com que no futuro essa biblioteca encapsule o JUnit, e em tempo de execução ele gere o código para o JUnit testar, sem precisar gerar uma classe de testes “física”. Não sei se essa é uma boa abordagem, parece maluquisse, mas pode ser outro caminho.

Mas isso ai talvez fique para ser pensado bem pro futuro rs. O framework ainda tem muitos cenários que tem que acrescentar, como testar estruturas de dados e lidar com generics outras coisas mais.

Vlw por compartilhar seu conhecimento, ajudou bastante.