Pular para o conteúdo
Skillpedia
Testes280 mil · #72

kotlin-testing

Faz seu agente escrever testes para código Kotlin de forma eficaz. Utiliza padrões de teste modernos e ajuda a garantir a qualidade e a cobertura do código.

O que ela faz

Esta skill ajuda a escrever testes para código feito em Kotlin. Ela usa ferramentas como Kotest e MockK para garantir que seu código funcione corretamente e seja fácil de manter.

Quando usar

  • ✓Quando você estiver escrevendo novas partes do seu código Kotlin.
  • ✓Para adicionar testes a um código Kotlin que já existe.
  • ✓Se você quer verificar a qualidade do seu código com relatórios de cobertura.

Exemplo do que pedir para a IA

“Como eu escrevo um teste para uma função que valida e-mails em Kotlin?”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/affaan-m/ECC/blob/main/pi/core/skills/kotlin-testing/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/affaan-m/ECC/blob/main/pi/core/skills/kotlin-testing/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A skill guia você para escrever um teste que falha primeiro (RED), depois escreve o código mínimo para fazê-lo passar (GREEN) e, por fim, refatora o código para deixá-lo mais limpo, mantendo os testes passando.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add affaan-m/ECC --skill kotlin-testing

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/kotlin-testing/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Padrões de Teste em Kotlin

Padrões abrangentes de teste em Kotlin para escrever testes confiáveis e de fácil manutenção, seguindo a metodologia TDD com Kotest e MockK.

Quando Usar

  • Escrevendo novas funções ou classes em Kotlin
  • Adicionando cobertura de testes a código Kotlin existente
  • Implementando testes baseados em propriedades
  • Seguindo o fluxo de trabalho TDD em projetos Kotlin
  • Configurando o Kover para cobertura de código

Como Funciona

  1. Identifique o código alvo — Encontre a função, classe ou módulo a ser testado
  2. Escreva uma especificação Kotest — Escolha um estilo de especificação (StringSpec, FunSpec, BehaviorSpec) que corresponda ao escopo do teste
  3. Simule dependências — Use MockK para isolar a unidade sob teste
  4. Execute os testes (RED) — Verifique se o teste falha com o erro esperado
  5. Implemente o código (GREEN) — Escreva o código mínimo para que o teste passe
  6. Refatore — Melhore a implementação mantendo os testes verdes
  7. Verifique a cobertura — Execute ./gradlew koverHtmlReport e verifique 80%+ de cobertura

Exemplos

As seções a seguir contêm exemplos detalhados e executáveis para cada padrão de teste:

Referência Rápida

Fluxo de Trabalho TDD para Kotlin

O Ciclo RED-GREEN-REFACTOR

RED     -> Write a failing test first
GREEN   -> Write minimal code to pass the test
REFACTOR -> Improve code while keeping tests green
REPEAT  -> Continue with next requirement

TDD Passo a Passo em Kotlin

// Step 1: Define the interface/signature
// EmailValidator.kt
package com.example.validator

fun validateEmail(email: String): Result<String> {
    TODO("not implemented")
}

// Step 2: Write failing test (RED)
// EmailValidatorTest.kt
package com.example.validator

import io.kotest.core.spec.style.StringSpec
import io.kotest.matchers.result.shouldBeFailure
import io.kotest.matchers.result.shouldBeSuccess

class EmailValidatorTest : StringSpec({
    "valid email returns success" {
        validateEmail("user@example.com").shouldBeSuccess("user@example.com")
    }

    "empty email returns failure" {
        validateEmail("").shouldBeFailure()
    }

    "email without @ returns failure" {
        validateEmail("userexample.com").shouldBeFailure()
    }
})

// Step 3: Run tests - verify FAIL
// $ ./gradlew test
// EmailValidatorTest > valid email returns success FAILED
//   kotlin.NotImplementedError: An operation is not implemented

// Step 4: Implement minimal code (GREEN)
fun validateEmail(email: String): Result<String> {
    if (email.isBlank()) return Result.failure(IllegalArgumentException("Email cannot be blank"))
    if ('@' !in email) return Result.failure(IllegalArgumentException("Email must contain @"))
    val regex = Regex("^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$")
    if (!regex.matches(email)) return Result.failure(IllegalArgumentException("Invalid email format"))
    return Result.success(email)
}

// Step 5: Run tests - verify PASS
// $ ./gradlew test
// EmailValidatorTest > valid email returns success PASSED
// EmailValidatorTest > empty email returns failure PASSED
// EmailValidatorTest > email without @ returns failure PASSED

// Step 6: Refactor if needed, verify tests still pass

Estilos de Especificação Kotest

StringSpec (Mais Simples)

class CalculatorTest : StringSpec({
    "add two positive numbers" {
        Calculator.add(2, 3) shouldBe 5
    }

    "add negative numbers" {
        Calculator.add(-1, -2) shouldBe -3
    }

    "add zero" {
        Calculator.add(0, 5) shouldBe 5
    }
})

FunSpec (Semelhante ao JUnit)

class UserServiceTest : FunSpec({
    val repository = mockk<UserRepository>()
    val service = UserService(repository)

    test("getUser retorna o usuário quando encontrado") {
        val expected = User(id = "1", name = "Alice")
        coEvery { repository.findById("1") } returns expected

        val result = service.getUser("1")

        result shouldBe expected
    }

    test("getUser lança exceção quando não encontrado") {
        coEvery { repository.findById("999") } returns null


…
Perguntas frequentes

O que é TDD?

TDD significa Test-Driven Development (Desenvolvimento Guiado por Testes). É uma metodologia onde você escreve os testes antes de escrever o código principal.

O que são Kotest e MockK?

Kotest e MockK são bibliotecas populares em Kotlin que ajudam a escrever testes de forma organizada e a simular partes do seu código para testar apenas o que você quer.

O que é cobertura de código (code coverage)?

Cobertura de código é uma métrica que mostra qual porcentagem do seu código foi executada pelos testes. O ideal é ter uma cobertura alta para garantir que a maior parte do seu código foi testada.

Detalhes

Descrição original do autor

Kotlin testing patterns with Kotest, MockK, coroutine testing, property-based testing, and Kover coverage. Follows TDD methodology with idiomatic Kotlin practices. Use when writing Kotlin tests with Kotest or MockK, or testing coroutines and checking coverage.

repo: affaan-m/ECC

Popularidade

Estrelas no GitHub
280 mil
Posição no ranking
#72
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas