JUnit-এর @Before এবং @After এনোটেশন
JUnit টেস্টিং ফ্রেমওয়ার্কে, @Before এবং @After এনোটেশন দুটি খুবই গুরুত্বপূর্ণ টেস্ট লাইফ সাইকেল মেথড চিহ্নিত করতে ব্যবহৃত হয়। এগুলি নিশ্চিত করে যে টেস্টের আগের এবং পরের প্রস্তুতি এবং পরিস্কারের কাজগুলি সঠিকভাবে করা হবে।
@Before: এটি টেস্টের আগে রান হয়, যাতে আপনি টেস্ট রান করার জন্য প্রাথমিক অবস্থান সেটআপ করতে পারেন। সাধারণত, টেস্টের জন্য মক অবজেক্ট তৈরি, ডাটাবেস কানেকশন সেট করা ইত্যাদি কাজ এই মেথডে করা হয়।@After: এটি টেস্টের পরে রান হয়, যাতে আপনি টেস্টের পর সম্পন্ন হওয়ার পর পরিস্কার কাজ করতে পারেন, যেমন মক অবজেক্টগুলো ক্লিন আপ করা, ডাটাবেস কানেকশন বন্ধ করা ইত্যাদি।
EasyMock-এর সাথে @Before এবং @After ব্যবহার
EasyMock-এ @Before এবং @After এনোটেশন ব্যবহার করলে আপনি মক অবজেক্টগুলির জন্য টেস্ট শুরুর আগে তাদের প্রস্তুত করতে পারেন এবং টেস্ট শেষ হওয়ার পর সেগুলি সঠিকভাবে পরিস্কার করতে পারেন।
Example: EasyMock with @Before and @After
ধরা যাক, আমাদের একটি Service ক্লাস আছে যার মধ্যে দুটি মেথড greet(String name) এবং farewell(String name) রয়েছে। আমরা EasyMock ব্যবহার করে এই মেথডগুলির জন্য টেস্ট লিখব এবং @Before এবং @After এনোটেশন ব্যবহার করব।
import org.easymock.EasyMock;
import org.junit.Before;
import org.junit.After;
import org.junit.Test;
import static org.junit.Assert.*;
public class EasyMockBeforeAfterTest {
private Service serviceMock;
// @Before: This method will run before each test method
@Before
public void setUp() {
// Creating mock object using EasyMock
serviceMock = EasyMock.createMock(Service.class);
// Setting up expectations
EasyMock.expect(serviceMock.greet("John")).andReturn("Hello, John!");
EasyMock.expect(serviceMock.farewell("John")).andReturn("Goodbye, John!");
// Activating the mock
EasyMock.replay(serviceMock);
}
// @Test: Test the behavior of greet and farewell methods
@Test
public void testServiceMethods() {
// Testing greet() method
String greetResult = serviceMock.greet("John");
assertEquals("Hello, John!", greetResult);
// Testing farewell() method
String farewellResult = serviceMock.farewell("John");
assertEquals("Goodbye, John!", farewellResult);
}
// @After: This method will run after each test method
@After
public void tearDown() {
// Verifying that the expected methods were called
EasyMock.verify(serviceMock);
}
}
ব্যাখ্যা:
@Before setUp():- setUp() মেথডটি
@Beforeএনোটেশন দ্বারা চিহ্নিত করা হয়েছে, তাই এটি প্রতিটি টেস্ট রান করার আগে কল হবে। এখানে মক অবজেক্ট তৈরি করা হচ্ছে এবং expect() মেথড দিয়ে প্রত্যাশা সেট করা হচ্ছে। - মক অবজেক্টে replay() মেথড ব্যবহার করে প্রত্যাশিত আচরণ সক্রিয় করা হচ্ছে।
- setUp() মেথডটি
@Test testServiceMethods():- testServiceMethods() মেথডে, আমরা
greet()এবংfarewell()মেথডের জন্য টেস্ট করছি। প্রতিটি মেথডের জন্য ফলাফল যাচাই করা হচ্ছে।
- testServiceMethods() মেথডে, আমরা
@After tearDown():- tearDown() মেথডটি
@Afterএনোটেশন দ্বারা চিহ্নিত করা হয়েছে, তাই এটি প্রতিটি টেস্টের পর কল হবে। এখানে, আমরা verify() মেথড ব্যবহার করে যাচাই করছি যে প্রত্যাশিত মেথড কল হয়েছে কিনা।
- tearDown() মেথডটি
@Before এবং @After এর ব্যবহার উদাহরণ
এই এনোটেশনগুলির ব্যবহার বিভিন্ন পরিস্থিতিতে টেস্টের জন্য সুবিধাজনক। উদাহরণস্বরূপ, আপনি যদি বিভিন্ন টেস্ট মেথডে মক অবজেক্টের জন্য পুনরায় কোড লিখতে না চান, তাহলে আপনি @Before এনোটেশন ব্যবহার করতে পারেন মক অবজেক্ট প্রস্তুত করার জন্য, এবং @After এনোটেশন ব্যবহার করতে পারেন পরিস্কার করার জন্য।
উদাহরণ: মক অবজেক্টের সাথে ডাটাবেস কানেকশন ব্যবহার
public class DatabaseServiceTest {
private DatabaseService dbServiceMock;
@Before
public void setUp() {
// Set up mock object for DatabaseService
dbServiceMock = EasyMock.createMock(DatabaseService.class);
// Set up expectations
EasyMock.expect(dbServiceMock.connect()).andReturn(true);
EasyMock.expect(dbServiceMock.query("SELECT * FROM users")).andReturn("User Data");
// Activate the mock
EasyMock.replay(dbServiceMock);
}
@Test
public void testDatabaseConnection() {
// Test the connect method
boolean isConnected = dbServiceMock.connect();
assertTrue(isConnected);
}
@Test
public void testDatabaseQuery() {
// Test the query method
String result = dbServiceMock.query("SELECT * FROM users");
assertEquals("User Data", result);
}
@After
public void tearDown() {
// Verifying the expected methods were called
EasyMock.verify(dbServiceMock);
}
}
এখানে, @Before এনোটেশন ব্যবহার করে DatabaseService এর মক অবজেক্ট প্রস্তুত করা হচ্ছে এবং @After এনোটেশন ব্যবহার করে নিশ্চিত করা হচ্ছে যে প্রত্যাশিত মেথডগুলো কল হয়েছে।
সারাংশ
@Beforeএবং@Afterএনোটেশনগুলি JUnit টেস্টিং ফ্রেমওয়ার্কের একটি গুরুত্বপূর্ণ অংশ। এগুলি টেস্ট শুরুর আগে এবং পরে প্রস্তুতি এবং পরিস্কার কার্য সম্পাদন করতে ব্যবহৃত হয়।- EasyMock ব্যবহার করে, আপনি
@Beforeএনোটেশনে মক অবজেক্ট তৈরি এবং@Afterএনোটেশনে মক অবজেক্টের ভেরিফিকেশন করতে পারেন। - এই এনোটেশনগুলি টেস্ট কোডের পুনঃব্যবহারযোগ্যতা, রক্ষণাবেক্ষণ এবং পাঠযোগ্যতা বৃদ্ধি করতে সাহায্য করে।
Read more