कोटलिन में परीक्षण: गुणवत्तापूर्ण कोड के लिए फ्रेमवर्क और उपकरण
Kotlin एक आधुनिक प्रोग्रामिंग भाषा है जो JVM पर काम करती है। Java के साथ संगतता के कारण, Kotlin कोड के परीक्षण के लिए क्लासिकल Java फ्रेमवर्क (JUnit, Mockito) के साथ-साथ विशेष रूप से Kotlin के लिए लिखे गए आधुनिक उपकरणों का उपयोग किया जा सकता है। इस लेख में हम मुख्य फ्रेमवर्क, उनकी विशेषताओं पर चर्चा करेंगे और व्यावहारिक उदाहरण देंगे।
1. JUnit 5 — परीक्षण का आधार
JUnit 5 JVM पर मॉड्यूलर परीक्षण के लिए मानक फ्रेमवर्क है। लैम्ब्डा, extension-फंक्शन और data-क्लास के समर्थन के कारण Kotlin के साथ बहुत अच्छी तरह काम करता है।
import org.junit.jupiter.api.Testimport org.junit.jupiter.api.Assertions.*
class CalculatorTest { @Test fun `addition should return correct sum`() { val result = Calculator().add(2, 3) assertEquals(5, result) }}Kotlin में JUnit 5 की विशेषताएँ:
- टेस्ट के नाम बैकटिक्स में स्पेस के साथ लिखे जा सकते हैं — पठनीयता बढ़ती है
@ParameterizedTestके माध्यम से पैरामीटराइज्ड टेस्ट का समर्थन- अंतर्निहित assertion-फंक्शन (assertAll, assertThrows)
- MockK और Mockito के साथ आसानी से संयोजित किया जा सकता है
2. Kotest — नई पीढ़ी का फ्रेमवर्क
Kotest (पूर्व में KotlinTest) एक शक्तिशाली फ्रेमवर्क है जो Kotlin में शुरू से लिखा गया है। यह टेस्ट विवरण की कई शैलियाँ प्रदान करता है (StringSpec, BehaviorSpec, FunSpec और अन्य)।
import io.kotest.core.spec.style.StringSpecimport io.kotest.matchers.shouldBe
class StringSpecExample : StringSpec({ "length should return correct size" { "hello".length shouldBe 5 } "startsWith should work" { "world".startsWith("wo") shouldBe true }})Kotest के लाभ:
- 200 से अधिक अंतर्निहित matcher (shouldBe, shouldContain, shouldBeGreaterThan)
- property-based testing का समर्थन (यादृच्छिक डेटा उत्पन्न करना)
- सारणीबद्ध परीक्षणों के लिए अंतर्निहित डेटा-प्रदाता
- Gradle और Maven के साथ पूर्ण एकीकरण
3. MockK — Kotlin के लिए मॉक
MockK मॉक-ऑब्जेक्ट बनाने के लिए एक लाइब्रेरी है, जिसे विशेष रूप से Kotlin के लिए डिज़ाइन किया गया है। यह null-safety, कोरूटीन और extension-फंक्शन को ध्यान में रखता है।
import io.mockk.everyimport io.mockk.mockkimport io.mockk.verifyimport org.junit.jupiter.api.Test
class UserServiceTest { @Test fun `should call repository`() { val repo = mockk<UserRepository>() every { repo.findUser(1) } returns User("Alice")
val service = UserService(repo) service.getUserName(1)
verify { repo.findUser(1) } }}MockK की प्रमुख क्षमताएँ:
spyका समर्थन (आंशिक मॉकिंग)- suspend-फंक्शन और कोरूटीन के साथ काम (
coEvery,coVerify) - तर्कों के लिए सुविधाजनक matcher (
any(),capture()) - परीक्षण के बाद मॉक का स्वचालित शून्यीकरण
4. Spek — BDD-शैली परीक्षण
Spek Behaviour-Driven Development के लिए एक फ्रेमवर्क है। यह परीक्षणों को "Given-When-Then" प्रारूप में वर्णित करने की अनुमति देता है।
import org.spekframework.spek2.Spekimport org.spekframework.spek2.style.specification.describe
class CalculatorSpek : Spek({ describe("Calculator") { val calc by memoized { Calculator() }
context("addition") { it("returns sum of two numbers") { val result = calc.add(2, 3) assertEquals(5, result) } } }})Spek की विशेषताएँ:
- व्यावसायिक विनिर्देशों के लिए पठनीय परीक्षण संरचना
- नेस्टेड संदर्भों और वैश्विक फिक्स्चर का समर्थन
- के साथ एकीकरण