Kotest का परिचय: यह क्या है और क्यों ज़रूरी है?
Kotest (पहले KotlinTest के नाम से जाना जाता था) Kotlin भाषा में टेस्ट लिखने के लिए एक शक्तिशाली और लचीली लाइब्रेरी है। यह डेवलपर्स को यूनिट, इंटीग्रेशन और फंक्शनल टेस्टिंग के लिए कई टूल्स प्रदान करती है। स्टैंडर्ड JUnit के विपरीत, Kotest टेस्ट लिखने की कई शैलियाँ (क्लासिक "xUnit" से लेकर Behavior-Driven Development तक), बिल्ट-इन प्रॉपर्टी-बेस्ड टेस्टिंग, शक्तिशाली मैचर्स (assertions), और Spring Boot, MockK, Arrow जैसे लोकप्रिय फ्रेमवर्क के साथ इंटीग्रेशन प्रदान करता है।
Kotest क्यों ज़रूरी है? आधुनिक Kotlin डेवलपमेंट में, टेस्टिंग सिर्फ कोड चेक करना नहीं, बल्कि क्वालिटी की नींव है। Kotest कई मुख्य समस्याओं का समाधान करता है:
- शैलियों में लचीलापन: आप "String Spec", "Fun Spec", "Behavior Spec" और अन्य शैलियों में टेस्ट लिख सकते हैं, अपनी टीम के लिए सबसे सुविधाजनक चुन सकते हैं।
- शक्तिशाली मैचर्स: बिल्ट-इन चेकिंग फंक्शन (shouldBe, shouldContain, shouldThrow) टेस्ट कोड को पढ़ने योग्य और संक्षिप्त बनाते हैं।
- प्रॉपर्टी-बेस्ड टेस्टिंग: यह हजारों रैंडम टेस्ट डेटा जनरेट करके आपके कोड के इनवेरिएंट्स को चेक करता है, न कि सिर्फ विशिष्ट वैल्यू।
- कोरूटीन के साथ इंटीग्रेशन: Kotest Kotlin कोरूटीन के साथ बेहतरीन काम करता है, जिससे बिना अतिरिक्त boilerplate के एसिंक्रोनस कोड टेस्ट करना आसान हो जाता है।
- एक्सटेंसिबिलिटी: आप अपने खुद के मैचर्स, लिसनर और एक्सटेंशन बना सकते हैं।
Kotest इंस्टॉलेशन
Kotest Maven Central के माध्यम से उपलब्ध है। इंस्टॉल करने के लिए, आपको build.gradle.kts (Gradle के लिए) या pom.xml (Maven के लिए) फ़ाइल में डिपेंडेंसी जोड़नी होगी।
Gradle के माध्यम से इंस्टॉलेशन (build.gradle.kts)
// dependencies सेक्शन में
dependencies {
// मुख्य मॉड्यूल (बेसिक मैचर्स और शैलियाँ शामिल हैं)
testImplementation("io.kotest:kotest-runner-junit5:5.9.1")
// प्रॉपर्टी-बेस्ड टेस्टिंग के लिए मॉड्यूल
testImplementation("io.kotest:kotest-property:5.9.1")
// फ्रेमवर्क (जैसे Spring) के साथ काम करने के लिए मॉड्यूल
testImplementation("io.kotest:kotest-extensions-spring:5.9.1")
}
Maven के माध्यम से इंस्टॉलेशन (pom.xml)
<dependency>
<groupId>io.kotest</groupId>
<artifactId>kotest-runner-junit5</artifactId>
<version>5.9.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.kotest</groupId>
<artifactId>kotest-property</artifactId>
<version>5.9.1</version>
<scope>test</scope>
</dependency>
नोट: यह लेख लिखने के समय वर्जन 5.9.1 नवीनतम है। हमेशा MVNRepository पर नवीनतम वर्जन चेक करें।
कोड उदाहरण के साथ त्वरित शुरुआत
आइए "Fun Spec" शैली का उपयोग करके एक कैलकुलेटर क्लास के लिए एक सरल टेस्ट लिखें - यह सबसे लोकप्रिय और सहज शैलियों में से एक है।
// टेस्ट किया जाने वाला क्लास
class Calculator {
fun add(a: Int, b: Int): Int = a + b
fun divide(a: Int, b: Int): Int {
if (b == 0) throw ArithmeticException("शून्य से भाग")
return a / b
}
}
// टेस्ट क्लास
import io.kotest.core.spec.style.FunSpec
import io.kotest.matchers.shouldBe
import io.kotest.matchers.shouldThrow
class CalculatorTest : FunSpec({
// टेस्ट ऑब्जेक्ट का इनिशियलाइज़ेशन
val calculator = Calculator()
test("दो धनात्मक संख्याओं का जोड़") {
val result = calculator.add(2, 3)
result shouldBe 5
}
test("शून्य से भाग देने पर एक्सेप्शन आना चाहिए") {
shouldThrow<ArithmeticException> {
calculator.divide(10, 0)
}
}
})
यह उदाहरण बेसिक स्ट्रक्चर दिखाता है: हम एक क्लास बनाते हैं जो Fun