কম্পিউটার

JUnit 5 উদাহরণ সহ টীকা

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);
    }
}

JUnit 5 উদাহরণ সহ টীকা

আপনি পরীক্ষার ফলাফল থেকে দেখতে পাচ্ছেন, যখন 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() {
    }
}

  1. Linux FIND কমান্ড উদাহরণ সহ

  2. জাভা ক্যারেক্টার charCount() উদাহরণ সহ

  3. উদাহরণ সহ পাইথনে Timeit?

  4. উদাহরণ সহ জাভা অ্যারেলিস্ট পদ্ধতি