আমি ইউনাইটের সঠিক ব্যবহার (বা কমপক্ষে ডকুমেন্টেশন) খুব বিভ্রান্তিকর পেয়েছি। এই প্রশ্ন উভয় ভবিষ্যতের রেফারেন্স এবং একটি বাস্তব প্রশ্ন হিসাবে কাজ করে।
আমি যদি সঠিকভাবে বুঝতে পারি তবে JUnit পরীক্ষা তৈরি ও পরিচালনা করার জন্য দুটি প্রধান পন্থা রয়েছে:
অ্যাপ্রোচ এ (জুনিট 3-স্টাইল): একটি শ্রেণি তৈরি করুন যা টেস্টকেস প্রসারিত করে এবং শব্দটি দিয়ে পরীক্ষা পদ্ধতিগুলি শুরু করে test
। জুনিট টেস্ট হিসাবে (ক্লাসে) ক্লাসটি চালানোর সময়, শব্দটি দিয়ে শুরু হওয়া সমস্ত পদ্ধতি test
স্বয়ংক্রিয়ভাবে চালিত হয়।
import junit.framework.TestCase;
public class DummyTestA extends TestCase {
public void testSum() {
int a = 5;
int b = 10;
int result = a + b;
assertEquals(15, result);
}
}
অ্যাপ্রোচ বি (জুনিট 4-স্টাইল): একটি 'সাধারণ' শ্রেণি তৈরি করুন এবং @Test
পদ্ধতিটিতে একটি টীকা প্রেরণ করুন । মনে রাখবেন যে শব্দটি দিয়ে আপনাকে পদ্ধতিটি শুরু করতে হবে না test
।
import org.junit.*;
import static org.junit.Assert.*;
public class DummyTestB {
@Test
public void Sum() {
int a = 5;
int b = 10;
int result = a + b;
assertEquals(15, result);
}
}
দুটি মিশ্রন করা ভাল ধারণা বলে মনে হচ্ছে না, উদাহরণস্বরূপ দেখুন এই স্ট্যাকওভারফ্লো প্রশ্ন :
এখন, আমার প্রশ্ন (গুলি):
- পছন্দসই পদ্ধতিটি কী বা আপনি কখন অন্যটির পরিবর্তে একটি ব্যবহার করবেন?
- অ্যাপ্রোচ বি পছন্দসই @ টেস্ট টীকাটি বাড়িয়ে ব্যতিক্রমগুলির জন্য পরীক্ষার অনুমতি দেয়
@Test(expected = ArithmeticException.class)
। তবে আপনি এ পদ্ধতির ব্যবহারের ক্ষেত্রে কীভাবে ব্যতিক্রমগুলি পরীক্ষা করবেন? এ পদ্ধতির ব্যবহার করার সময়, আপনি পরীক্ষার স্যুটে কয়েকটি পরীক্ষার ক্লাসকে এভাবে গ্রুপ করতে পারেন:
TestSuite suite = new TestSuite("All tests");
suite.addTestSuite(DummyTestA.class);
suite.addTestSuite(DummyTestAbis.class);
তবে এটিকে বি পদ্ধতির সাথে ব্যবহার করা যাবে না (যেহেতু প্রতিটি টেস্টক্লাসের টেস্টকেস সাবক্লাস করা উচিত)। বি পদ্ধতির জন্য গ্রুপ টেস্টগুলির সঠিক উপায় কী?
সম্পাদনা: আমি উভয় পদ্ধতির সাথে JUnit সংস্করণ যুক্ত করেছি
extends TestCase
এবং তারপরে প্রতিটি পরীক্ষাগুলি@Test
কেবল জিনিসগুলিকে বিভ্রান্ত করার জন্যও টীকায়িত । :)