home
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Kotest es un proyecto de testing flexible y completo para Kotlin con soporte multiplataforma.
Para las últimas actualizaciones consulta el Changelog.
Consulta nuestra guía de inicio rápido para comenzar.
Comunidad
-
Stack Overflow (no olvides usar la etiqueta "kotest".)
-
Canal de Kotest en Kotlin Slack (consigue una invitación aquí)
Pruebas con estilo
Escribe pruebas simples y elegantes usando uno de los estilos disponibles:
class MyTests : FunSpec({
test("length should return size of string") {
"hello".length shouldBe 5
}
test("startsWith should test for a prefix") {
"hello world" should startWith("hello")
}
})
Kotest incluye varios estilos de pruebas para que elijas el que mejor se adapte a tus necesidades.
Multitud de Matchers
Utiliza más de 300 matchers proporcionados para verificar aserciones en múltiples tipos:
"substring".shouldContain("str")
user.email.shouldBeLowerCase()
myImageFile.shouldHaveExtension(".jpg")
cityMap.shouldContainKey("London")
Los helpers withClue y asClue añaden contexto adicional a las aserciones para que los fallos sean autoexplicativos:
withClue("Name should be present") { user.name shouldNotBe null }
data class HttpResponse(val status: Int, body: String)
val response = HttpResponse(200, "the content")
response.asClue {
it.status shouldBe 200
it.body shouldBe "the content"
}
Se permite anidamiento en ambos casos mostrando todas las pistas disponibles.
Los matchers son métodos de extensión que tu IDE autocompletará. Consulta el listado completo de matchers o crea los tuyos.
Deja que el Computador Genere tus Datos de Prueba
Usa pruebas basadas en propiedades para testear tu código con datos generados automáticamente:
class PropertyExample: StringSpec({
"String size" {
checkAll<String, String> { a, b ->
(a + b) shouldHaveLength a.length + b.length
}
}
})
Comprueba todos los casos complicados con pruebas basadas en datos
Maneja incluso enormes combinaciones de parámetros fácilmente con pruebas basadas en datos:
class StringSpecExample : FreeSpec({
"maximum of two numbers" {
forAll(
row(1, 5, 5),
row(1, 0, 1),
row(0, 0, 0)
) { a, b, max ->
Math.max(a, b) shouldBe max
}
}
})
Prueba Excepciones
Verificar excepciones es sencillo con Kotest:
val exception = shouldThrow<IllegalAccessException> {
// code in here that you expect to throw an IllegalAccessException
}
exception.message should startWith("Something went wrong")
Ajusta fino de la ejecución de pruebas
Puedes especificar el número de invocaciones, paralelismo y timeout para cada prueba o globalmente.
Además puedes agrupar pruebas por etiquetas o desactivarlas condicionalmente.
Todo lo que necesitas es config:
class MySpec : FreeSpec({
"should use config".config(timeout = 2.seconds, invocations = 10, threads = 2, tags = setOf(Database, Linux)) {
// test here
}
})