JUnit 5 JUnit এর পরবর্তী প্রজন্ম। লক্ষ্য হল JVM-এ ডেভেলপার-সাইড পরীক্ষার জন্য একটি আপ-টু-ডেট ভিত্তি তৈরি করা। এর মধ্যে রয়েছে Java 8 এবং তার উপরে ফোকাস করা, সেইসাথে বিভিন্ন স্টাইল পরীক্ষার সক্ষম করা।
আপনি Maven এবং Gradle উভয়ই ব্যবহার করতে পারেন।
আপনি যদি Maven ব্যবহার করেন, তাহলে আপনাকে আপনার pom.xml
-এ নিম্নলিখিত নির্ভরতা যোগ করতে হবে ফাইল:
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.3.1</version>
<scope>test</scope>
</dependency>
</dependencies>
@JUnit 5 টিকা
আপনি লক্ষ্য করবেন যে Junit 5-এ, সবচেয়ে সুস্পষ্ট পরিবর্তনগুলির মধ্যে একটি হল পরীক্ষার ক্লাস এবং পদ্ধতিগুলিকে আর সর্বজনীন হতে হবে না৷
এখন, সবচেয়ে সাধারণ JUnit 5 টীকাগুলির তালিকার মধ্য দিয়ে যাওয়া যাক।
@Test
এই টীকাটি বোঝায় যে একটি পদ্ধতি একটি পরীক্ষা পদ্ধতি। মনে রাখবেন এই টীকাটি কোন বৈশিষ্ট্য গ্রহণ করে না।
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
class JUnit5Test {
@Test
void helloJUnit5() {
assertEquals(10, 5+5);
}
}
@ParameterizedTest
প্যারামিটারাইজড পরীক্ষা বিভিন্ন আর্গুমেন্ট সহ একাধিকবার পরীক্ষা চালানো সম্ভব করে। এগুলিকে নিয়মিত @Test
এর মতই ঘোষণা করা হয় পদ্ধতি কিন্তু @ParameterizedTest
ব্যবহার করুন পরিবর্তে টীকা।
এছাড়াও, আপনাকে অবশ্যই কমপক্ষে একটি উত্স ঘোষণা করতে হবে যা প্রতিটি আহ্বানের জন্য আর্গুমেন্ট সরবরাহ করবে এবং তারপরে পরীক্ষা পদ্ধতিতে আর্গুমেন্টগুলি ব্যবহার করবে৷
উদাহরণস্বরূপ, নিম্নলিখিত উদাহরণটি একটি প্যারামিটারাইজড পরীক্ষা প্রদর্শন করে যা @ValueSource
ব্যবহার করে আর্গুমেন্টের উৎস হিসেবে একটি স্ট্রিং অ্যারে নির্দিষ্ট করার জন্য টীকা।
উদাহরণ:
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import static org.junit.jupiter.api.Assertions.assertTrue;
class JUnit5Test {
@ParameterizedTest
@ValueSource(strings = { "cali", "bali", "dani" })
void endsWithI(String str) {
assertTrue(str.endsWith("i"));
}
}
@RepeatedTest
JUnit 5-এ @RepeatedTest
দিয়ে একটি পদ্ধতি টীকা দিয়ে একটি নির্দিষ্ট সংখ্যক বার পরীক্ষা পুনরাবৃত্তি করার ক্ষমতা রয়েছে এবং কাঙ্ক্ষিত পুনরাবৃত্তির মোট সংখ্যা উল্লেখ করা।
পুনরাবৃত্ত পরীক্ষার প্রতিটি আমন্ত্রণ একটি নিয়মিত @Test
সম্পাদনের মতো আচরণ করে পদ্ধতি।
এটি সেলেনিয়ামের সাথে UI পরীক্ষার ক্ষেত্রে বিশেষভাবে কার্যকর৷
৷import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.RepeatedTest;
import org.junit.jupiter.api.RepetitionInfo;
import org.junit.jupiter.api.TestInfo;
import static org.junit.jupiter.api.Assertions.assertEquals;
class JUnit5Test {
@RepeatedTest(value = 5, name = "{displayName} {currentRepetition}/{totalRepetitions}")
@DisplayName("RepeatingTest")
void customDisplayName(RepetitionInfo repInfo, TestInfo testInfo) {
int i = 3;
System.out.println(testInfo.getDisplayName() +
"-->" + repInfo.getCurrentRepetition()
);
assertEquals(repInfo.getCurrentRepetition(), i);
}
}
আপনি পরীক্ষার ফলাফল থেকে দেখতে পাচ্ছেন, যখন i==3
, পরীক্ষা পাস, অন্যথায় এটি ব্যর্থ হয়।
@DisplayName
পরীক্ষার ক্লাস এবং পরীক্ষার পদ্ধতিগুলি কাস্টম ডিসপ্লে নাম ঘোষণা করতে পারে যা পরীক্ষার রানার এবং পরীক্ষার রিপোর্ট দ্বারা প্রদর্শিত হবে৷
উদাহরণ:
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
@DisplayName("DisplayName Demo")
class JUnit5Test {
@Test
@DisplayName("Custom test name")
void testWithDisplayName() {
}
@Test
@DisplayName("Print test name")
void printDisplayName(TestInfo testInfo) {
System.out.println(testInfo.getDisplayName());
}
}
@BeforeEach
@BeforeEach
টীকাটি নির্দেশ করে যে টীকা করা পদ্ধতিটি প্রতিটি পরীক্ষার পদ্ধতির আগে কার্যকর করা উচিত, JUnit 4 এর @Before
-এর অনুরূপ .
উদাহরণ:
import org.junit.jupiter.api.*;
class JUnit5Test {
@BeforeEach
void init(TestInfo testInfo) {
String callingTest = testInfo.getTestMethod().get().getName();
System.out.println(callingTest);
}
@Test
void firstTest() {
System.out.println(1);
}
@Test
void secondTest() {
System.out.println(2);
}
}
আউটপুট:
firstTest
1
secondTest
2
@AfterEach
এই টীকাটি নির্দেশ করে যে টীকা করা পদ্ধতিটি প্রতিটি পরীক্ষা পদ্ধতির পরে কার্যকর করা উচিত, JUnit 4 এর @After
এর সাথে সাদৃশ্যপূর্ণ . উদাহরণ স্বরূপ, প্রতিটি পরীক্ষার পরে যদি পরীক্ষাগুলির একটি প্রপার্টি রিসেট করতে হয়, তাহলে আমরা @AfterEach
দিয়ে একটি পদ্ধতি টীকা করতে পারি সেই কাজের জন্য।
import org.junit.jupiter.api.*;
class JUnit5Test {
@Test
void firstTest() {
System.out.println(1);
}
@Test
void secondTest() {
System.out.println(2);
}
@AfterEach
void after(TestInfo testInfo) {
String callingTest = testInfo.getTestMethod().get().getName();
System.out.println(callingTest);
}
}
আউটপুট:
1
firstTest
2
secondTest
@BeforeAll
এই টীকাটি সমস্ত পরীক্ষার আগে একটি পদ্ধতি কার্যকর করে। এটি JUnit 4 এর @BeforeClass
এর সাথে সাদৃশ্যপূর্ণ . @BeforeAll
টীকা সাধারণত পরীক্ষার জন্য বিভিন্ন জিনিস শুরু করতে ব্যবহৃত হয়।
উদাহরণ:
import org.junit.jupiter.api.*;
class JUnit5Test {
@BeforeAll
static void init() {
System.out.println("Only run once before all tests");
}
@Test
void firstTest() {
System.out.println(1);
}
@Test
void secondTest() {
System.out.println(2);
}
}
আউটপুট:
Only run once before all tests
1
2
@AfterAll
@AfterAll
টীকা ব্যবহার করা হয় টীকা করা পদ্ধতি চালানোর জন্য, শুধুমাত্র সমস্ত পরীক্ষা চালানোর পরে। এটি JUnit 4 এর @AfterClass
এর সাথে সাদৃশ্যপূর্ণ । আমরা এই টীকাটি ব্যবহার করি সমস্ত পরীক্ষার শেষে সমস্ত প্রক্রিয়া ছিন্ন বা বন্ধ করতে৷
উদাহরণ:
import org.junit.jupiter.api.*;
class JUnit5Test {
@Test
void firstTest() {
System.out.println(1);
}
@Test
void secondTest() {
System.out.println(2);
}
@AfterAll
static void after() {
System.out.println("Only run once after all tests");
}
}
আউটপুট:
1
2
Only run once after all tests
@Tag
আমরা এই টীকাটি ব্যবহার করতে পারি ফিল্টারিং পরীক্ষার জন্য ট্যাগ ঘোষণা করতে, হয় ক্লাস বা পদ্ধতি স্তরে৷
@Tag
যখন আমরা নির্বাচিত পরীক্ষাগুলির সাথে একটি পরীক্ষা প্যাক তৈরি করতে চাই তখন টীকাটি কার্যকর।
উদাহরণ:
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
@Tag("smoke")
class JUnit5Test {
@Test
@Tag("login")
void validLoginTest() {
}
@Test
@Tag("search")
void searchTest() {
}
}
@Disabled
@Disabled
ক্লাস বা পদ্ধতি পর্যায়ে পরীক্ষা নিষ্ক্রিয় বা এড়িয়ে যাওয়ার জন্য টীকা ব্যবহার করা হয়। এটি JUnit 4 এর @Ignore
এর সাথে সাদৃশ্যপূর্ণ .
ক্লাস লেভেলে ঘোষণা করা হলে, সমস্ত @test
পদ্ধতি বাদ দেওয়া হয়। যখন আমরা @Disabled
ব্যবহার করি পদ্ধতি স্তরে, শুধুমাত্র টীকা করা পদ্ধতি নিষ্ক্রিয় করা হয়।
উদাহরণ:
@Disabled
একটি পরীক্ষা ক্লাস নিষ্ক্রিয় করতে ব্যবহৃত হয়:
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
@Disabled
class DisabledClassDemo {
@Test
void testWillBeSkipped() {
}
}
উদাহরণ:
@Disabled
পরীক্ষা পদ্ধতি নিষ্ক্রিয় করতে ব্যবহৃত টীকা:
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
class DisabledTestsDemo {
@Disabled
@Test
void testWillBeSkipped() {
}
@Test
void testWillBeExecuted() {
}
}