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
Mensagem pronta para colar
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-testingOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/affaan-m/ECC/main/pi/core/skills/kotlin-testing/SKILL.md -o SKILL.mdConteú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
- Identifique o código alvo — Encontre a função, classe ou módulo a ser testado
- Escreva uma especificação Kotest — Escolha um estilo de especificação (StringSpec, FunSpec, BehaviorSpec) que corresponda ao escopo do teste
- Simule dependências — Use MockK para isolar a unidade sob teste
- Execute os testes (RED) — Verifique se o teste falha com o erro esperado
- Implemente o código (GREEN) — Escreva o código mínimo para que o teste passe
- Refatore — Melhore a implementação mantendo os testes verdes
- Verifique a cobertura — Execute
./gradlew koverHtmlReporte 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
- Especificações Kotest — Exemplos de StringSpec, FunSpec, BehaviorSpec, DescribeSpec em Estilos de Especificação Kotest
- Mocking — Configuração do MockK, mocking de corrotinas, captura de argumentos em MockK
- Demonstração TDD — Ciclo completo RED/GREEN/REFACTOR com EmailValidator em Fluxo de Trabalho TDD para Kotlin
- Cobertura — Configuração e comandos do Kover em Cobertura Kover
- Testes Ktor — Configuração do testApplication em Testes Ktor testApplication
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
Comentários
- …
Mais skills deste repositório
accessibility
Ajuda seu agente a criar interfaces que todos possam usar. Garante que sites e aplicativos funcionem bem para pessoas com deficiência, como cegos ou com mobilidade reduzida.
affaan-m/ECC
agent-architecture-audit
Faz seu agente verificar se tudo está funcionando corretamente. Ele encontra e conserta problemas em sistemas de IA, garantindo que funcionem como esperado.
affaan-m/ECC
agent-eval
Ajuda seu agente a comparar diferentes ferramentas de programação de IA. Ele mede qual é mais rápido, barato e confiável para realizar tarefas específicas.
affaan-m/ECC
agent-harness-construction
Faz seu agente entender melhor como realizar tarefas. Ele otimiza as ferramentas e instruções que o agente usa para aumentar suas chances de sucesso.
affaan-m/ECC
Skills parecidas
webapp-testing
Permite testar aplicações web locais, verificar funcionalidades e depurar o comportamento da interface. Captura screenshots e logs do navegador.
anthropics/skills
ponytail-audit
Faz uma auditoria completa do código. Ele encontra bugs, falhas de segurança, código lento e sugere o que remover ou melhorar.
DietrichGebert/ponytail
ponytail-review
Revisa a qualidade de uma mudança no código. Verifica se a lógica está correta, se é segura, rápida e se todas as linhas são necessárias.
DietrichGebert/ponytail