JUnit এর সাথে iBATIS Integration

iBATIS এবং Unit Testing - আইবাটিস (iBATIS) - Java Technologies

448

iBATIS (বর্তমানে MyBatis) একটি জনপ্রিয় ORM ফ্রেমওয়ার্ক যা ডেটাবেস অপারেশনগুলো সহজ করে এবং JUnit হল একটি জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক যা Java কোডের জন্য ইউনিট টেস্ট লেখতে সহায়তা করে। iBATIS (MyBatis) এবং JUnit এর সমন্বয়ে আপনি ডেটাবেসের সাথে কাজ করার সময় টেস্টিং করতে পারবেন এবং সিস্টেমের আচরণ নিশ্চিত করতে পারবেন।

এখানে আমরা দেখব কিভাবে iBATIS (MyBatis) এবং JUnit একে অপরের সাথে ইন্টিগ্রেট করা যায়।


1. JUnit Integration Overview

JUnit টেস্টিং ফ্রেমওয়ার্ক ব্যবহার করে, আপনি iBATIS (MyBatis) এর মাধ্যমে ডেটাবেস অপারেশনের জন্য ইউনিট টেস্ট লিখতে পারেন। টেস্টিং করা সময় সঠিক ডেটাবেস কানেকশন নিশ্চিত করার জন্য কিছু কনফিগারেশন এবং ডেটাবেস ট্রানজেকশন ম্যানেজমেন্ট সেটআপ করা প্রয়োজন।

আমরা JUnit 5 এবং MyBatis এর সাথে H2 ইন-মেমরি ডেটাবেস ব্যবহার করে একটি ছোট উদাহরণ দেখাবো।


2. iBATIS (MyBatis) এবং JUnit Integration Steps

Step 1: Maven Dependencies (JUnit 5 এবং MyBatis)

JUnit 5 এবং MyBatis এর জন্য প্রয়োজনীয় ডিপেনডেন্সি গুলি আপনার pom.xml ফাইলে যোগ করুন।

<dependencies>
    <!-- MyBatis Dependencies -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.10</version>
    </dependency>

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>2.0.6</version>
    </dependency>

    <!-- H2 Database (In-Memory Database for Testing) -->
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <version>1.4.200</version>
        <scope>test</scope>
    </dependency>

    <!-- JUnit 5 -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.7.0</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.7.0</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Step 2: Create iBATIS Configuration and Mapper Files

sql-map-config.xml Example:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS//DTD SQL Map Config 3.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-3.dtd">
<sqlMapConfig>

    <!-- DataSource Configuration -->
    <dataSource type="POOLED">
        <property name="driver" value="org.h2.Driver"/>
        <property name="url" value="jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"/>
        <property name="username" value="sa"/>
        <property name="password" value=""/>
    </dataSource>

    <!-- Transaction Manager Configuration -->
    <transactionManager type="JDBC"/>

    <!-- Mapper Files -->
    <sqlMap resource="com/example/mapper/EmployeeMapper.xml"/>

</sqlMapConfig>
EmployeeMapper.xml Example (for Insert Operation):
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//iBATIS//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/sql-map-3.dtd">
<mapper namespace="com.example.mapper.EmployeeMapper">

    <insert id="insertEmployee" parameterType="com.example.model.Employee">
        INSERT INTO employee (name, department)
        VALUES (#{name}, #{department})
    </insert>

    <select id="getEmployeeById" resultType="com.example.model.Employee">
        SELECT id, name, department
        FROM employee
        WHERE id = #{id}
    </select>

</mapper>

3. Create Model Classes

Employee.java Example:

public class Employee {
    private int id;
    private String name;
    private String department;

    // Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }
}

4. Writing JUnit Test for MyBatis Integration

JUnit-এ MyBatis টেস্ট করতে আমরা in-memory H2 database ব্যবহার করব যাতে কোনো ডেটাবেস কনফিগারেশন পরিবর্তন করতে না হয়। আমরা JUnit 5 ব্যবহার করব এবং MyBatis সেশনের মাধ্যমে ডেটাবেস অপারেশনগুলো পরীক্ষা করব।

JUnit Test Example for MyBatis Integration:

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class EmployeeMapperTest {

    private SqlSessionFactory sessionFactory;

    @BeforeEach
    public void setUp() {
        // Build the SqlSessionFactory from the configuration
        sessionFactory = new SqlSessionFactoryBuilder()
                .build(EmployeeMapperTest.class.getResourceAsStream("/sql-map-config.xml"));
    }

    @Test
    public void testInsertEmployee() {
        try (SqlSession session = sessionFactory.openSession()) {
            // Prepare the Employee data
            Employee employee = new Employee();
            employee.setName("John Doe");
            employee.setDepartment("HR");

            // Insert Employee using MyBatis Mapper
            session.insert("com.example.mapper.EmployeeMapper.insertEmployee", employee);
            session.commit();

            // Retrieve the Employee by ID
            Employee fetchedEmployee = session.selectOne("com.example.mapper.EmployeeMapper.getEmployeeById", 1);

            // Validate the result
            assertEquals("John Doe", fetchedEmployee.getName());
            assertEquals("HR", fetchedEmployee.getDepartment());
        }
    }
}

Explanation of Test Code:

  • setUp(): SqlSessionFactory তৈরি করার জন্য sql-map-config.xml কনফিগারেশন ফাইল ব্যবহার করা হয়।
  • testInsertEmployee():
    • একটি Employee অবজেক্ট তৈরি করা হচ্ছে এবং insertEmployee মেথড ব্যবহার করে ডেটাবেসে ইনসার্ট করা হচ্ছে।
    • তারপর getEmployeeById মেথড ব্যবহার করে ওই কর্মচারীকে পুনরায় ডেটাবেস থেকে ফেচ করা হচ্ছে।
    • JUnit assertEquals ব্যবহার করে পরীক্ষা করা হচ্ছে যে ডেটাবেসে সঠিকভাবে ডেটা ইনসার্ট হয়েছে কিনা।

5. Running the Tests

JUnit টেস্ট চালানোর জন্য আপনি Maven বা Gradle ব্যবহার করতে পারেন।

For Maven:

# Run tests
mvn test

For Gradle:

# Run tests
gradle test

iBATIS (MyBatis) এবং JUnit ইন্টিগ্রেশন করা অত্যন্ত সহজ এবং কার্যকরী। আপনি JUnit ব্যবহার করে MyBatis এর SQL কুয়েরি এবং Mapper কার্যকারিতা সহজে টেস্ট করতে পারবেন। এই গাইডে:

  1. JUnit 5 টেস্টিং ফ্রেমওয়ার্ক ব্যবহার করে MyBatis টেস্টিং দেখানো হয়েছে।
  2. H2 in-memory database ব্যবহার করে ডেটাবেস কনফিগারেশন এবং টেস্ট করা হয়েছে।
  3. SqlSession ব্যবহার করে ডেটাবেস অপারেশন এবং তাদের ভ্যালিডেশন করা হয়েছে।

এই কৌশলগুলি আপনাকে iBATIS (MyBatis) এবং JUnit এর মাধ্যমে আপনার অ্যাপ্লিকেশন এবং ডেটাবেস অপারেশনগুলো কার্যকরভাবে টেস্ট করতে সহায়তা করবে।

Content added By
Promotion

Are you sure to start over?

Loading...