JUnit এবং Mockito ব্যবহার করে JSF Managed Beans টেস্ট করা

JSF এর টেস্টিং এবং ডিবাগিং - জেএসএফ (JSF) - Web Development

222

JSF Managed Beans অ্যাপ্লিকেশনের ভিউ, মডেল এবং কন্ট্রোলার স্তরের মধ্যে যোগাযোগ স্থাপন করতে ব্যবহৃত হয়। এগুলি সাধারণত ইউজার ইনপুট গ্রহণ এবং ডেটাবেস/ব্যবসায়িক লজিকের সাথে সংযোগ করে। JUnit এবং Mockito হল দুটি জনপ্রিয় টুল যা unit testing এবং mocking এর জন্য ব্যবহৃত হয়। JSF Managed Beans টেস্ট করার জন্য এই টুলগুলো ব্যবহার করা খুবই কার্যকর, কারণ তা আপনার কোডের কার্যক্ষমতা এবং নির্ভুলতা নিশ্চিত করতে সাহায্য করে।

JUnit এবং Mockito ব্যবহার করে JSF Managed Beans টেস্ট করা


JUnit হল একটি টেস্ট ফ্রেমওয়ার্ক যা জাভা ক্লাসগুলির কার্যক্ষমতা পরীক্ষার জন্য ব্যবহৃত হয়, এবং Mockito হল একটি মকিং ফ্রেমওয়ার্ক যা dependencies বা external services মক করার জন্য ব্যবহৃত হয়। JSF Managed Beans টেস্ট করতে, JUnit এবং Mockito ব্যবহার করে আপনি নির্ভরশীল ক্লাসগুলিকে মক করতে পারেন, এবং একে একে মেথডগুলির কার্যক্ষমতা পরীক্ষা করতে পারেন।

১. JUnit সেটআপ


JUnit 5 (Jupiter) হল JUnit এর সবচেয়ে নতুন সংস্করণ, যা টেস্ট কেসগুলির কার্যক্ষমতা পরীক্ষা এবং assertions ব্যবহারের জন্য ব্যবহৃত হয়।

JUnit 5 Dependency (Maven)

<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>

Mockito Dependency (Maven)

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>3.7.7</version>
    <scope>test</scope>
</dependency>

২. Managed Bean এর উদাহরণ


ধরা যাক, একটি Managed Bean আছে, যার মধ্যে একটি মেথড আছে যেটি ইউজারের ইনপুট গ্রহণ করে এবং একটি অ্যাকশন সম্পাদন করে।

import javax.faces.bean.ManagedBean;

@ManagedBean
public class UserBean {

    private String username;
    
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String login() {
        if ("admin".equals(username)) {
            return "success";
        } else {
            return "failure";
        }
    }
}

এখানে:

  • login() মেথডটি username চেক করে এবং admin হলে "success", অন্যথায় "failure" রিটার্ন করবে।

৩. Unit Test লেখা


এখন, এই Managed Bean এর login() মেথডটি টেস্ট করার জন্য JUnit এবং Mockito ব্যবহার করা হবে।

JUnit Test Class উদাহরণ

import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;

public class UserBeanTest {

    private UserBean userBean;

    @BeforeEach
    public void setUp() {
        // Initialize the UserBean
        userBean = new UserBean();
    }

    @Test
    public void testLoginSuccess() {
        // Set valid username
        userBean.setUsername("admin");
        
        // Test login method
        String result = userBean.login();
        
        // Assert that the result is "success"
        assertEquals("success", result);
    }

    @Test
    public void testLoginFailure() {
        // Set invalid username
        userBean.setUsername("guest");
        
        // Test login method
        String result = userBean.login();
        
        // Assert that the result is "failure"
        assertEquals("failure", result);
    }
}

এখানে:

  • @BeforeEach: এটি টেস্ট শুরু হওয়ার আগে প্রতিটি টেস্ট কেসে UserBean কে ইনিশিয়ালাইজ করে।
  • @Test: এটি টেস্ট মেথড চিহ্নিত করে, যা login() মেথডের সফল এবং ব্যর্থ দুটি পরিস্থিতি পরীক্ষা করে।

৪. Mockito ব্যবহার করে Bean Dependency Mocking


কিছু Managed Beans অন্য ক্লাস বা সার্ভিসের উপর নির্ভর করতে পারে। Mockito এর সাহায্যে আপনি এই নির্ভরশীল ক্লাসগুলিকে মক করতে পারেন এবং তাদের আচরণ নির্ধারণ করতে পারেন। উদাহরণস্বরূপ, ধরুন UserBean এর মধ্যে একটি UserService ডিপেনডেন্সি রয়েছে, যা ডেটাবেস বা অন্য কোনো সেবা থেকে ডেটা লোড করে।

UserService Class (Dependency)

public class UserService {
    public String fetchUserDetails(String username) {
        // Imagine it fetches user data from a database
        return "User: " + username;
    }
}

UserBean Class (Updated with Dependency)

import javax.faces.bean.ManagedBean;

@ManagedBean
public class UserBean {

    private String username;
    private UserService userService;

    public UserBean(UserService userService) {
        this.userService = userService;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUserDetails() {
        return userService.fetchUserDetails(username);
    }
}

Mockito Test with Dependency Injection

import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

public class UserBeanTest {

    private UserBean userBean;
    private UserService mockUserService;

    @BeforeEach
    public void setUp() {
        // Create a mock of UserService
        mockUserService = mock(UserService.class);
        userBean = new UserBean(mockUserService);
    }

    @Test
    public void testGetUserDetails() {
        // Define behavior of the mock
        when(mockUserService.fetchUserDetails("admin")).thenReturn("User: admin");

        // Set the username and call the method
        userBean.setUsername("admin");
        String result = userBean.getUserDetails();

        // Verify the result
        assertEquals("User: admin", result);
        
        // Verify that the mock was called
        verify(mockUserService).fetchUserDetails("admin");
    }
}

এখানে:

  • Mockito mock(): এটি UserService ক্লাসের একটি মক অবজেক্ট তৈরি করে।
  • when(...).thenReturn(...): এটি নির্দিষ্ট করে যে মক করা fetchUserDetails() মেথডটি "User: admin" রিটার্ন করবে যখন "admin" প্যারামিটার দেওয়া হবে।
  • verify(): এটি নিশ্চিত করে যে fetchUserDetails() মেথডটি সঠিকভাবে কল করা হয়েছে।

৫. Mocking Managed Beans in JSF Testing


JSF Managed Beans টেস্ট করার জন্য আপনি Mockito ব্যবহার করে সহজেই মক করতে পারেন। তবে, JSF Integration Testing করতে JSF Unit Testing Framework বা Arquillian ব্যবহার করা হতে পারে। এই টুলগুলির মাধ্যমে আপনি পূর্ণাঙ্গ JSF অ্যাপ্লিকেশনের টেস্টিং করতে পারবেন, যেখানে JSF কনটেইনার এবং UI ইনপুটের কার্যক্রম পরীক্ষিত হবে।

সারাংশ


JSF Managed Beans টেস্ট করার জন্য JUnit এবং Mockito একটি শক্তিশালী কৌশল। JUnit এর মাধ্যমে আপনি Unit Test লেখার মাধ্যমে আপনার Managed Beans এর কার্যক্ষমতা পরীক্ষা করতে পারেন এবং Mockito ব্যবহার করে আপনি নির্ভরশীল ক্লাসগুলি মক করতে পারেন, যা Unit Test লেখার সময় বাইরে থেকে আসা ডেটা বা সার্ভিসগুলির উপর নির্ভর করে। এর মাধ্যমে, আপনি নিশ্চিত হতে পারেন যে আপনার JSF অ্যাপ্লিকেশনটি নির্ভুলভাবে কাজ করছে।

Content added By
Promotion

Are you sure to start over?

Loading...