LLM Skills
~/catalogue/tests et qualité//kotlin-test
Tests et qualitésource GitHub

Tests kotlin

/kotlin-test

Crée, exécute et améliore les tests Kotlin pour sécuriser les changements.

affaan-maffaan-m
240.5k
20 mai 2026
MIT License
// contenu du skill

description: Enforce TDD workflow for Kotlin. Write Kotest tests first, then implement. Verify 80%+ coverage with Kover.


Kotlin TDD Command

This command enforces test-driven development methodology for Kotlin code using Kotest, MockK, and Kover.

What This Command Does

  1. Define Types/Interfaces: Scaffold function signatures first
  2. Write Kotest Tests: Create comprehensive test specs (RED)
  3. Run Tests: Verify tests fail for the right reason
  4. Implement Code: Write minimal code to pass (GREEN)
  5. Refactor: Improve while keeping tests green
  6. Check Coverage: Ensure 80%+ coverage with Kover

When to Use

Use /kotlin-test when:

  • Implementing new Kotlin functions or classes
  • Adding test coverage to existing Kotlin code
  • Fixing bugs (write failing test first)
  • Building critical business logic
  • Learning TDD workflow in Kotlin

TDD Cycle

RED     -> Write failing Kotest test
GREEN   -> Implement minimal code to pass
REFACTOR -> Improve code, tests stay green
REPEAT  -> Next test case

Example Session

`text
User: /kotlin-test I need a function to validate user registration requests

Agent:
# TDD Session: Registration Validator

## Step 1: Define Interface

// validator/RegistrationValidator.kt

package com.example.validator

data class RegistrationRequest(

val name: String,

val email: String,

val password: String,

)

sealed class ValidationResult {

data object Valid : ValidationResult()

data class Invalid(val errors: List<String>) : ValidationResult()

}

fun validateRegistration(request: RegistrationRequest): ValidationResult {

TODO("not implemented")

}


## Step 2: Write Kotest Tests (RED)

// validator/RegistrationValidatorTest.kt

package com.example.validator

import io.kotest.core.spec.style.FunSpec

import io.kotest.matchers.shouldBe

import io.kotest.matchers.types.shouldBeInstanceOf

class RegistrationValidatorTest : FunSpec({

test("valid registration returns Valid") {

val request = RegistrationRequest(

name = "Alice",

email = "alice@example.com",

password = "SecureP@ss1",

)

val result = validateRegistration(request)

result.shouldBeInstanceOf<ValidationResult.Valid>()

}

test("blank name returns Invalid") {

val request = RegistrationRequest(

name = "",

email = "alice@example.com",

password = "SecureP@ss1",

)

val result = validateRegistration(request)

val invalid = result.shouldBeInstanceOf<ValidationResult.Invalid>()

invalid.errors shouldBe listOf("Name is required")

}

test("invalid email returns Invalid") {

val request = RegistrationRequest(

name = "Alice",

email = "not-an-email",

password = "SecureP@ss1",

)

val result = validateRegistration(request)

val invalid = result.shouldBeInstanceOf<ValidationResult.Invalid>()

invalid.errors shouldBe listOf("Invalid email format")

}

test("short password returns Invalid") {

val request = RegistrationRequest(

name = "Alice",

email = "alice@example.com",

password = "short",

)

val result = validateRegistration(request)

val invalid = result.shouldBeInstanceOf<ValidationResult.Invalid>()

invalid.errors shouldBe listOf("Password must be at least 8 characters")

}

test("multiple errors returns all errors") {

val request = RegistrationRequest(

name = "",

email = "bad",

password = "short",

)

val result = validateRegistration(request)

val invalid = result.shouldBeInstanceOf<ValidationResult.Invalid>()

invalid.errors.size shouldBe 3

}

})


## Step 3: Run Tests - Verify FAIL

$ ./gradlew test

RegistrationValidatorTest > valid registration returns Valid FAILED

kotlin.NotImplementedError: An operation is not implemented

FAILED (5 tests, 0 passed, 5 failed)


✓ Tests fail as expected (NotImplementedError).

## Step 4: Implement Minimal Code (GREEN)

// validator/RegistrationValidator.kt

package com.example.validator

private val EMAILREGEX = Regex("^[A-Za-z0-9.%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$")

private const val MINPASSWORDLENGTH = 8

fun validateRegistration(request: RegistrationRequest): ValidationResult {

val errors = buildList {

if (request.name.isBlank()) add("Name is required")

if (!EMAIL_REGEX.matches(request.email)) add("Invalid email format")

if (request.password.length < MINPASSWORDLENGTH) add("Password must be at least $MINPASSWORDLENGTH characters")

}

return if (errors.isEmpty()) ValidationResult.Valid

else ValidationResult.Invalid(errors)

}


## Step 5: Run Tests - Verify PASS

$ ./gradlew test

RegistrationValidatorTest > valid registration returns V

// source originale publique
affaan-m/ECC
/commands/kotlin-test.md
Licence : MIT License
Projet indépendant, non affilié à Anthropic. Ce skill reste la propriété de son auteur original.
// installer ce skill
Collez cette commande dans votre terminal à la racine de votre projet :
mkdir -p .claude/commands && curl -o ".claude/commands/kotlin-test.md" "https://raw.githubusercontent.com/affaan-m/ECC/main/commands/kotlin-test.md"
Ensuite dans Claude Code, tapez /kotlin-test pour l'activer.
open_in_newVoir la source originale
// sauvegarder
Sauvegarde disponible après connexion.
loginSe connecter pour sauvegarder
// informations
Créateuraffaan-m
Étoiles 240.5k
LicenceMIT License
Mis à jour20 mai 2026
Format.md
AccèsGratuit
// similaires

Skills Tests et qualité

Voir toutarrow_forward