01. Kotest νλ μμν¬(Framework)
About 2 min
01. Kotest νλ μμν¬(Framework) κ΄λ ¨
Kotest νλ μμν¬(Framework)
Kotlinμ ν
μ€ν
νλ μμν¬μ λν΄ μκ°νλ€.
Kotlinμ ν μ€ν νλ μμν¬μ λν΄ μκ°νλ€.
Table of Contents
Kotest κ°μ(overview)
Kotlinμ ν
μ€ν
νλ μμν¬μ λν΄ μκ°νλ€.
Kotest νλ‘μ νΈ μ€μ (Setup)
Kotestλ KotlinμΌλ‘ μμ±λ κ°λ ₯ν ν
μ€νΈ νλ μμν¬μ΄λ€. νλ‘μ νΈ μ€μ μ νλ λ°©λ²μ λν΄μ μ€λͺ
νλ€.
Kotest κΈ°λ³Έ μμ±λ²(Writing tests)
Kotestμ κΈ°λ³Έ μμ±λ²μ λν΄ μ€λͺ
νλ€.
Kotest ν
μ€ν
μ€νμΌ(Testing Styles)
Kotestμλ λ€μν ν
μ€νΈ μ€νμΌ(Testing Styles)μ μ 곡νκ³ μλ€. μ¬κΈ°μλ λ€μν ν
μ€νΈ μ€νμΌμ λν΄μ μ€λͺ
νλ€.
Kotest μ‘°κ±΄λΆ ν
μ€νΈ(Conditional evaluation)
ν
μ€νΈλ₯Ό λΉνμ±ννλ λ°©λ²μλ μ¬λ¬ κ°μ§κ° μλ€. ν
μ€νΈμμ νλ μ½λ©νκ±°λ, λ°νμμ 쑰건λΆλ‘ λΉνμ±νν μλ μλ€.
Kotest 격리 λͺ¨λ(Isolation Modes)
격리 λͺ¨λ(Isolation Modes)μ μ€μ μΌλ‘ ν
μ€νΈ μμ§μ΄ ν
μ€νΈ μΌμ΄μ€μ λν μ€ν μΈμ€ν΄μ€λ₯Ό μμ±νλ λ°©λ²μ μ μ΄ν μ μλ€. μ¦, ν
μ€νΈ μΌμ΄μ€λ§λ€ ν
μ€νΈ μΈμ€ν΄μ€λ₯Ό μ΄λ»κ² μμ±ν μ§λ₯Ό κ²°μ νλ€.
Kotest κΈ°λ³Έ νμ₯(Extensions)
Kotestμ Extensionsλ Kotest ν
μ€νΈ μ€ν νλ μμν¬μμ ν
μ€νΈ λΌμ΄νμ¬μ΄ν΄μ ν΅ν©ν μ μλ λ€μν κΈ°λ₯μ μ 곡νλ νμ₯ κΈ°λ₯μ΄λ€.
Kotest μ½λ£¨ν΄(Coroutines)
Kotestμμ μ½λ£¨ν΄μ ν
μ€νΈνλ λ°©λ²μ λν΄μ μ€λͺ
νλ€.
Kotest μμΈ ν
μ€νΈ(Testing Exceptions)
Kotest λ°μ΄ν° κΈ°λ° ν
μ€νΈ(Data-Driven Testing)
ν¨κ³Όμ μΈ ν
μ€νΈλ₯Ό μν΄μλ ν
μ€νΈ λ°μ΄ν°μ μμ±, κ΄λ¦¬ λ° μ λ¦¬κ° μ€μνλ€. μ΄λ² μΉμ
μμλ Kotestλ₯Ό μ¬μ©νμ¬ ν
μ€νΈ λ°μ΄ν°λ₯Ό μ΄λ»κ² κ΄λ¦¬νλμ§μ λν΄ μμλ³΄κ² λ€.
Kotest λΉκ²°μ μ ν
μ€νΈ(Non-deterministic Testing)
Non-deterministic Testingμ μννΈμ¨μ΄μ 무결μ±μ κ²μ¦νλ λ° λμμ΄ λ μ μλ€. μλ₯Ό λ€μ΄, λ³λ ¬ νλ‘μΈμ€, μΈλΆ λ€νΈμν¬ νΈμΆ, λ€μν μμ€ν
μμμ λν μ‘μΈμ€ λ±κ³Ό κ°μ΄ 무μμμ±μ κ°μ§λ μμλ€μ ν¬ν¨νλ μννΈμ¨μ΄ μμ€ν
μ ν¨κ³Όμ μΌλ‘ ν
μ€νΈν μ μλ€.
Kotest ν΅ν©(Intergrations)
Kotestμ λͺ¨νΉ νλ μμν¬(mockk) λ° JaCoCoλ₯Ό ν¨κ» μ¬μ©νμ¬ μ’ λ κ²¬κ³ νκ³ νμ§ λμ ν
μ€νΈλ₯Ό μμ±ν μ μλ€. μ¬κΈ°μμλ ν
μ€νΈμ 격리μ μμ‘΄μ± κ΄λ¦¬λ₯Ό λμμ£Όλ mockkκ³Ό μ½λ 컀λ²λ¦¬μ§ λꡬλ‘, μ½λλ² μ΄μ€μμ μΌλ§λ λ§μ λΆλΆμ΄ ν
μ€νΈλμλμ§λ₯Ό μΈ‘μ ν μ μλ JaCoCoμ λν΄μ μ€λͺ
νλ€.
Kotest ν
μ€νΈ μμ μ μ΄(Ordering)
Kotestμμμ Orderingμ ν
μ€νΈ μ€νμ μμλ₯Ό μ μ΄νλ κΈ°λ₯μ΄λ€. νΉμ ν μμλ‘ ν
μ€νΈλ₯Ό μ€ννκ³ μΆκ±°λ, νΉμ 쑰건μ λ°λΌ ν
μ€νΈλ₯Ό νν°λ§νκ³ μ€νν λ μ μ©νλ€.
Kotest νκ·Έλ₯Ό μ¬μ©νμ¬ ν
μ€νΈ κ·Έλ£Ήν(Grouping Tests with Tags)
ν¨κ³Όμ μΈ μννΈμ¨μ΄ ν
μ€νΈλ₯Ό μν΄μλ ν
μ€νΈ μΌμ΄μ€λ₯Ό μμ±νκ³ κ΄λ¦¬νλ κ²μ΄ μ€μνλ€. μ΄λ² μΉμ
μμλ Kotestλ₯Ό μ¬μ©νμ¬ ν
μ€νΈ μΌμ΄μ€λ₯Ό μμ±νλ λ°©λ²μ λν΄ μμλ³΄κ² λ€.
Kotest μμ(Resources)
Kotestμμμ 리μμ€ μλμΌλ‘ λ«λλ‘ νλ λ°©λ²κ³Ό ν
μ€νΈμ νμν νμΌ λ° λλ ν°λ¦¬ μμ μμ± λ°©λ²μ λν΄μ μ€λͺ
νλ€.
Kotest μ€μ (Configuration)
Kotest μ€μ (Configuration)μ ν
μ€νΈ μ€ν λμμ 컀μ€ν°λ§μ΄μ§νκ³ μ μ΄νλ λ° μ¬μ©λλ€. λ€μν μ€μ μ΅μ
μ μ 곡νμ¬ μ¬μ©μκ° ν
μ€νΈ νκ²½μ μνλ λλ‘ μ‘°μ ν μ μλ€.
Kotest ν
μ€νΈ ν©ν 리(Test Factories)
λλ‘λ μΌλ° ν
μ€νΈ μΈνΈλ₯Ό μμ±ν λ€μ νΉμ μ
λ ₯μ μ¬μ¬μ©νκ³ μΆμ λκ° μλ€. Kotestμμλ νλ μ΄μμ μ€νμ ν¬ν¨λ μ μλ ν
μ€νΈλ₯Ό μμ±νλ ν
μ€νΈ ν©ν 리λ₯Ό ν΅ν΄ μ΄λ₯Ό μνν μ μλ€.
Kotest ν
μ€νΈ μΆλ ₯(Test Output)
Kotest ν
μ€νΈ κ²°κ³Όλ₯Ό μΆλ ₯νλ λ°©λ²μ λν΄μ μ€λͺ
νλ€.
Kotest νμμμ(timeouts)
ν
μ€νΈμ νΈμΆ μκ° μ νμ λκ³ ν
μ€νΈλ₯Ό νλ λ°©λ²μ λν΄μ μ€λͺ
νλ€.
Kotest λ€λ₯Έ μ€μ (Other settings)
Kotestμμ λΉ λ₯΄κ² μ€ν¨νλ λ°©λ², λΉ ν
μ€νΈμΈ κ²½μ° μ€ν¨νκ² νλ λ°©λ² λ±μ λν΄μ μ€λͺ
νλ€.