Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Testes em Kotlin e inicialização de atributos

Se o projeto fosse em Kotlin, faria sentido eu manter os usuários como atributos usando by lazy { }?

Ou esse tipo de abordagem não funcionaria em uma classe de testes?

Outra coisa, tendo em vista a interoperabilidade Java/Kotlin, consigo ter um projeto Java com testes em Kotlin?

Obrigado

4 respostas

Oi Guilherme, tudo bem?

Sobre a dúvida de criar os usuários: depende muito do fluxo que você faz para obter o usuário, no geral, o lazy pode ser usado para quaisquer tipo de properties que não vão mudar de valor. O grande problema dele é que precisa tomar cuidado com o que está inicializando, por exemplo, se tentar acessar uma view antes de setar o layout, pode ocorrer um NPE, eu escrevi um artigo falando um pouco sobre o assunto :)

Tem algum exemplo que queira usar para casos de classe de teste? De uma maneira genérica, não consigo identificar situações problemáticas a não ser essas que precisa realizar alguma pré execução para que a inicialização possa ocorrer.

Sim é possível criar testes em Kotlin em projeto Java, você usa uma ferramenta de build.

Oi, Alex!

Desculpa, eu acho que não expliquei direito hehehe

Como o curso é sobre testes, todas as perguntas aqui são relacionadas as classes de teste.

No caso, por exemplo o usuário Fran que criaste como atributo, mas depois mudaste de idéia pra não ficar inicializando a toda hora.

Meu raciocínio é que se eu usar o lazy, o atributo só irá ser inicializado se for de fato usado, assim podemos ter ele reaproveitado mesmo que em poucos lugares sem afetar a performance

solução!

Sim, poderia ser considerado, pois teria a mesma ideia, inclusive, é possível testar, adicionando logs dentro do lazy:

private val alex by lazy {
        println("inicializou alex")
        Usuario("Alex")
 }

private val fran by lazy {
        println("inicializou fran")
        Usuario("Fran") 
}

Então usaria dentro dos testes e verifica quando a inicialização é feita.

Perfeito. Gosto dessa abordagem no Kotlin. Assim as coisas ficam mais organizadas.

Obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software