परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण · पाठ

परीक्षणों के लिए एम्बेडेड डेटाबेस

तेज़ और पृथक एकीकरण परीक्षण के लिए इन-मेमोरी या एम्बेडेड डेटाबेस कॉन्फ़िगर और उपयोग करें।

पाठ 3, कुल 4 में से11 चरण

परीक्षणों के लिए एम्बेडेड डेटाबेस, CoddyKit पर परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

परीक्षणों के लिए एम्बेडेड डेटाबेस

Spring Boot अनुप्रयोगों के लिए एकीकरण परीक्षण लिखते समय, विशेषकर डेटाबेस से जुड़े अनुप्रयोगों के लिए, आपको अपने परीक्षण चलाने हेतु एक डेटाबेस इंस्टेंस की आवश्यकता होती है।

एम्बेडेड डेटाबेस इस परिस्थिति के लिए हल्का, मेमोरी-आधारित समाधान प्रदान करते हैं।

एम्बेडेड डेटाबेस का उपयोग क्यों करें?

एम्बेडेड डेटाबेस परीक्षण के लिए कई महत्वपूर्ण लाभ प्रदान करते हैं:

  • अलगाव: प्रत्येक परीक्षण निष्पादन को एक साफ़, नया डेटाबेस मिलता है, जिससे दुष्प्रभाव रुकते हैं।
  • गति: मेमोरी में होने के कारण ये अत्यंत तेज़ होते हैं और परीक्षण चलने का समय कम करते हैं।
  • सरलता: बाहरी डेटाबेस सर्वर या जटिल सेटअप की आवश्यकता नहीं होती।
  • पुनरुत्पादकता: परीक्षण एकसमान रहते हैं, क्योंकि वे हमेशा समान डेटा स्थिति से शुरू होते हैं।

H2 और HSQLDB विकल्प

Java अनुप्रयोगों में एम्बेडेड डेटाबेस के दो लोकप्रिय विकल्प H2 Database और HSQLDB हैं।

  • H2: एक तेज़, मुक्त-स्रोत और JDBC-अनुरूप मेमोरी-आधारित डेटाबेस है। इसका Spring Boot के साथ व्यापक रूप से उपयोग होता है।
  • HSQLDB: Java में लिखा गया एक और हल्का रिलेशनल डेटाबेस है।

हम H2 पर ध्यान केंद्रित करेंगे, क्योंकि Spring Boot में यह एक सामान्य डिफ़ॉल्ट है।

H2 निर्भरता जोड़ना

अपने Spring Boot प्रोजेक्ट में H2 का उपयोग करने के लिए आप सामान्यतः इसे pom.xml (Maven के लिए) या build.gradle (Gradle के लिए) में test स्कोप निर्भरता के रूप में जोड़ते हैं।

इससे यह सुनिश्चित होता है कि वह केवल परीक्षण के दौरान उपलब्ध हो।

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>test</scope>
</dependency>

Spring Boot स्वतः-कॉन्फ़िगरेशन

Spring Boot की एक उपयोगी विशेषता स्वतः-कॉन्फ़िगरेशन है। जब परीक्षणों के दौरान इसे क्लासपाथ पर H2 दिखाई देता है, तो यह आपके लिए मेमोरी-आधारित H2 डेटाबेस को स्वतः कॉन्फ़िगर कर देता है।

परीक्षणों के लिए आपको प्रायः application.properties में डेटाबेस URL निर्दिष्ट करने की आवश्यकता नहीं होती, जिससे सेटअप बहुत सरल हो जाता है!

User एंटिटी और रिपॉज़िटरी

आइए एक सरल User एंटिटी और UserRepository पर विचार करें। हम जाँचना चाहते हैं कि हमारी रिपॉज़िटरी उपयोगकर्ताओं को सही ढंग से सहेज और प्राप्त कर रही है या नहीं।

ये मानक JPA घटक हैं।

// User.java
package com.coddykit.demo;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;

    public User() {}
    public User(String name, String email) {
        this.name = name;
        this.email = email;
    }

    // Getters and Setters
    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }
}

// UserRepository.java
package com.coddykit.demo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
    User findByName(String name);
}

H2 के साथ @DataJpaTest

Spring Boot JPA घटकों के परीक्षण के लिए विशेष रूप से @DataJpaTest प्रदान करता है। यह मेमोरी-आधारित डेटाबेस (उपलब्ध होने पर H2 जैसे डेटाबेस) और एक EntityManager को स्वतः कॉन्फ़िगर करता है।

यह प्रत्येक परीक्षण के बाद लेन-देन को वापस भी कर देता है, जिससे स्थिति साफ़ बनी रहती है।

UserRepository परीक्षण का उदाहरण

यहाँ H2 और @DataJpaTest का उपयोग करके अपनी UserRepository के लिए एकीकरण परीक्षण लिखने का तरीका बताया गया है:

package com.coddykit.demo;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager;
import static org.assertj.core.api.Assertions.assertThat;

@DataJpaTest
class UserRepositoryTest {

    @Autowired
    private TestEntityManager entityManager;

    @Autowired
    private UserRepository userRepository;

    @Test
    void whenFindByName_thenReturnUser() {
        // given
        User alice = new User("Alice", "alice@example.com");
        entityManager.persist(alice);
        entityManager.flush();

        // when
        User found = userRepository.findByName(alice.getName());

        // then
        assertThat(found.getName()).isEqualTo(alice.getName());
        assertThat(found.getEmail()).isEqualTo(alice.getEmail());
    }

    @Test
    void whenInvalidName_thenReturnNull() {
        // when
        User found = userRepository.findByName("InvalidName");

        // then
        assertThat(found).isNull();
    }
}

स्कीमा और डेटा आरंभीकरण

अधिक जटिल परिस्थितियों में आपको अपने मेमोरी-आधारित डेटाबेस में स्कीमा या प्रारंभिक डेटा पहले से भरने की आवश्यकता हो सकती है।

  • DDL (डेटा परिभाषा भाषा) के लिए schema.sql को src/test/resources में रखें।
  • DML (डेटा हेरफेर भाषा) के लिए data.sql को src/test/resources में रखें।

Spring Boot आपके परीक्षणों के लिए इन्हें स्वतः पहचान लेगा।

त्वरित जाँच

निम्नलिखित में से कौन-सा Spring Boot एकीकरण परीक्षणों के लिए H2 जैसे एम्बेडेड डेटाबेस का उपयोग करने का प्राथमिक लाभ नहीं है?

पुनरावलोकन और अगले चरण

हमने देखा कि H2 जैसे एम्बेडेड डेटाबेस तेज़ और अलग-थलग Spring Boot एकीकरण परीक्षणों के लिए कितने उपयोगी हैं।

  • वे गति, अलगाव और सरलता प्रदान करते हैं।
  • Spring Boot उन्हें बहुत कम प्रयास में स्वतः-कॉन्फ़िगर कर देता है।
  • @DataJpaTest इन डेटाबेस के साथ JPA रिपॉज़िटरी का परीक्षण सरल बनाता है।
  • आप schema.sql और data.sql का उपयोग करके स्कीमा और डेटा आरंभ कर सकते हैं।

इसके बाद आप MockMvc के साथ REST API का परीक्षण करना सीख सकते हैं!

शुरुआत निःशुल्क

एआई शिक्षक के साथ परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “परीक्षणों के लिए एम्बेडेड डेटाबेस” पाठ निःशुल्क है?

हाँ — परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “परीक्षणों के लिए एम्बेडेड डेटाबेस” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“परीक्षणों के लिए एम्बेडेड डेटाबेस” में मैं क्या सीखूँगा?

तेज़ और पृथक एकीकरण परीक्षण के लिए इन-मेमोरी या एम्बेडेड डेटाबेस कॉन्फ़िगर और उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“परीक्षणों के लिए एम्बेडेड डेटाबेस” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Spring परीक्षण संदर्भ फ़्रेमवर्क
  2. RESTful एपीआई का परीक्षण
  3. परीक्षणों के लिए एम्बेडेड डेटाबेस
  4. @WebMvcTest और MockMvc से वेब परतों का परीक्षण
← परीक्षण में निपुणता: JUnit, Mockito और एकीकरण परीक्षण पर वापस जाएँ