Kotlinautas
Esse conteúdo é oferecido e distribuído pela comunidade Kotlinautas, uma comunidade brasileira que busca oferecer conteúdo gratuito sobre a linguagem Kotlin em um espaço plural.
Teste Unitário
Teste unitário é um tipo de teste onde cada componente do software pode ser testado separadamente. Com isso, cada parte do sistema será isolada, dando a garantia que está funcionando como o esperado.
Kotest
Kotest é uma biblioteca em Kotlin para a criação de testes unitários. Kotest pode ser usado com diferentes estilos de teste, permitindo uma grandle flexibilidade.
Materiais
Será necessário ter o IntelliJ instalado na máquina e um conhecimento básico sobre a linguagem Kotlin.
O quê vamos criar?
Vamos criar uma classe Calculadora
, que terá quatro funções, sendo Soma
, Subtração
, Multiplicação
e Divisão
. Cada uma dessas funções representa uma operação matemática.
Iremos criar um teste unitário para essa classe, testando cada operação separadamente usando a Kotest.
Criando o projeto
Abra seu IntelliJ no menu inicial e clique em New Project:
Depois, selecione a opção Kotlin DSL build script, selecione também a opção Kotlin/JVM, e opicionalmente remova a primeira opção Java. Essa opção não vai mudar em nada, pois ela dá suporte do Gradle á linguagem Java, mas apenas iremos usar Kotlin.
Após isso, clique em Next e escreva o nome do projeto e a localização na sua máquina. Essas duas opção são completamente pessoais, caso não tenha nenhuma ideia, coloque algo como kotest apenas como identificação.
Agora, com o projeto aberto, vá ao aquivo build.gradle.kts
e adicione a dependência testImplementation("io.kotlintest:kotlintest-runner-junit5:3.1.7")
, com a seção dependencies
ficando assim:
dependencies {
implementation(kotlin("stdlib"))
testImplementation("io.kotlintest:kotlintest-runner-junit5:3.1.7")
}
Também adicione uma modificação ás Tasks do Gradle:
tasks.withType<Test> {
useJUnitPlatform()
}
Ao final, nosso arquivo build.gradle.kts
ficará assim:
plugins {
java
kotlin("jvm") version "1.5.30"
}
group = "org.example"
version = "1.0-SNAPSHOT"
repositories {
mavenCentral()
}
dependencies {
implementation(kotlin("stdlib"))
testImplementation("io.kotlintest:kotlintest-runner-junit5:3.1.7")
}
tasks.withType<Test> {
useJUnitPlatform()
}
Agora, clique no elefante no canto superior direito para carregar as alterações no Gradle.
Após isso, poderemos começar a programar. Você pode criar um arquivo em src/main/kotlin/
chamado main.kt
para ser o arquivo principal da aplicação.
Criando a classe Calculadora
Vamos criar um arquivo em src/main/kotlin/Calculadora.kt
que irá armazenar uma classe Calculadora
com alguns métodos que representam operações matemáticas:
class Calculadora {
fun soma(x: Int, y: Int): Int {
return x + y
}
fun subtração(x: Int, y: Int): Int {
return x - y
}
fun multiplicação(x: Int, y: Int): Int {
return x * y
}
fun divisão(x: Int, y: Int): Int {
return x / y
}
}
Criando testes
Agora vamos criar uma pasta chamado src/main/tests/
e um arquivo calculadora.kt
dentro dessa pasta.
Essa pasta irá guardar todos os testes unitários do nosso projeto, e será usada pela Kotest para ver quais são os testes disponíveis.
Primeiro, vamos importar a kotest ao nosso arquivo:
import io.kotlintest.shouldBe
import io.kotlintest.specs.StringSpec
Após isso, vamos criar uma variável chamada calculadora
que irá armazenar uma instância da nossa classe Calculadora
:
val calculadora = Calculadora()
Vamos criar uma classe chamada TestarCalculadora
, que irá armazenar os testes unitários da classe Calculadora
:
class TestarCalculadora: StringSpec({
})
- Nesse estilo
StringSpec
poderemos inserir um teste usando um texto que irá definir esse teste, aumentando a semântica.
Vamos adicionar o primeiro teste que será sobre a função soma
, primeiro, vamos colocar o texto do teste:
class TestarCalculadora: StringSpec({
"Testar soma da calculadora" {
}
})
- Podemos abrir um bloco para esse teste usando o texto que define o teste, seguido por
{}
Após isso, podemos inserir os testes dessa maneira:
class TestarCalculadora: StringSpec({
"Testar soma da calculadora" {
calculadora.soma(10, 20).shouldBe(30)
calculadora.soma(20, 20).shouldBe(40)
calculadora.soma(50, 40).shouldBe(90)
}
})
- Usamos a função
soma
, passando os números, e após isso podemos usar a funçãoshouldBe
, que recebe um argumento, e obriga o resultado de uma função ser esse argumento recebido. - Por exemplo, passamos á função
soma
os valores10
e20
. Que irão resultar em30
. Após isso, usamos a funçãoshouldBe
para garantir que esse valor será30
.
Após isso, podemos repetir o mesmo processo para as outras operações, sempre criando um novo teste:
class TestarCalculadora: StringSpec({
"Testar soma da calculadora" {
calculadora.soma(10, 20).shouldBe(30)
calculadora.soma(20, 20).shouldBe(40)
calculadora.soma(50, 40).shouldBe(90)
}
"Testar substração da calculadora" {
calculadora.subtração(10, 20).shouldBe(-10)
calculadora.subtração(20, 20).shouldBe(0)
calculadora.subtração(30, 10).shouldBe(20)
}
"Testar multiplicação da calculadora" {
calculadora.multiplicação(2, 5).shouldBe(10)
calculadora.multiplicação(5, 5).shouldBe(25)
calculadora.multiplicação(10, 7).shouldBe(70)
}
"Testar divisão da calculadora" {
calculadora.divisão(10, 2).shouldBe(5)
calculadora.divisão(30, 3).shouldBe(10)
calculadora.divisão(60, 5).shouldBe(12)
}
})
Agora você pode clicar no menu do Gradle ao lado da tela, clique em Run Configurations
e em kotest [test]
para rodar os testes.
Com isso todos os testes irão passar e a classe Calculadora
estará testada.
Agora tente modificar algum teste intencionalmente para modificar o resultado e rode os teste novamente. Com isso, os testes resultarão em um erro, mostrando que a classe Calculadora
está sendo implementada de maneira incorreta segundo essa nova versão dos testes.
Finalização
Neste artigo você aplicou testes unitários com Kotest á uma calculadora. Busque aprender mais maneira de criar testes e diferentes estilos de testes para tornar esse conhecimento mais flexível.
Muito obrigada por ler ❤️🏳️⚧️ e me segue nas redes, é tudo @lissatransborda 👀
Top comments (0)