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:
- poder especificar timeout
- 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.