CodeGym/Java Course/মডিউল 3/JUnit এ দরকারী টীকা

JUnit এ দরকারী টীকা

বিদ্যমান

4.1 @অক্ষম

এখন আসুন JUnit ফ্রেমওয়ার্কের কিছু খুব দরকারী এবং জনপ্রিয় টীকা দেখি। প্রথম টীকাটি আপনাকে একটি নির্দিষ্ট পরীক্ষা বন্ধ করতে দেয় যাতে JUnit এটি কল না করে। এটি এমন ক্ষেত্রে প্রয়োজন যেখানে আপনি লক্ষ্য করেন যে পরীক্ষাটি সঠিকভাবে কাজ করছে না, অথবা আপনি কোড পরিবর্তন করেন এবং পরীক্ষাটি দুর্ঘটনাক্রমে ভেঙে যায়।

যেমনটি আমি আগে লিখেছিলাম, 99% পরীক্ষা কারো দ্বারা সমর্থিত হয় না, তাই তারা সকলেই তাড়াতাড়ি বা পরে অক্ষম হয়ে যাবে। অতএব, এই টীকাটি দরকারী তালিকায় প্রথম।

তার উদাহরণ বিবেচনা করুন:

public class AppTest {

    @Disabled("Test is temporarily disabled. True, true")
    @Test
    void testOnDev(){
        System.setProperty("ENV", "DEV");
        Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
    }

    @Test
    void testOnProd(){
     System.setProperty("ENV", "PROD");
        Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
    }
}

উপরের উদাহরণে, পদ্ধতিটি testOnDev()বলা হবে না। যাইহোক, @Disabledক্লাস ঘোষণার আগে টীকাটি লেখা যেতে পারে, তারপরে এর সমস্ত পদ্ধতি উপেক্ষা করা হবে।

@Disabled("Temporarily turned off the test, we will fix it by May 2001")
public class AppTest {
    @Test
    void testOnDev(){
        System.setProperty("ENV", "DEV");
        Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
    }

    @Test
    void testOnProd(){
     System.setProperty("ENV", "PROD");
        Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
    }
}

4.2 @নেস্টেড

JUnit আপনাকে নেস্টেড ক্লাসে পরীক্ষার পদ্ধতি কল করার অনুমতি দেয়। মানে নেস্টেড টেস্ট ক্লাস। এটি একটি সত্য নয় যে আপনি প্রায়শই তাদের মুখোমুখি হবেন, তবে এমন একটি সম্ভাবনা রয়েছে, তাই আপনাকে এটি কী তা বুঝতে হবে।

ঘোষণার আগে নেস্টেড ক্লাসের পদ্ধতিগুলিকে কল করতে, আপনাকে একটি টীকা লিখতে হবে @Nested। উদাহরণ:

public class AppTest {
    @Nested
    public class DevStagingEnvironment {
    @Test
        void testOnDev(){
            System.setProperty("ENV", "DEV");
            Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
        }
   }

    @Nested
    public class ProductionEnvironment {
        @Test
        void testOnProd(){
           System.setProperty("ENV", "PROD");
           Assumptions.assumeFalse("DEV".equals(System.getProperty("ENV")));
        }
   }
}

আরো বিস্তারিত অফিসিয়াল ডকুমেন্টেশন পাওয়া যাবে .

4.3 @ExtendWith

আরেকটি দরকারী টীকা হয় @ExtendWith. সম্ভবত আপনি তার সাথে প্রায়শই দেখা করবেন, তাই আসুন তাকে আরও বিশদে দেখি।

JUnit একটি শক্তিশালী কাঠামো যা আপনাকে আপনার কাজের নমনীয় কাস্টমাইজেশনের জন্য বিভিন্ন প্লাগইন (এক্সটেনশন) লিখতে দেয়। কিছু এক্সটেনশন পরীক্ষার বিষয়ে পরিসংখ্যান সংগ্রহ করতে পারে, অন্যরা একটি ইন-মেমরি ফাইল সিস্টেম অনুকরণ করতে পারে, অন্যরা একটি ওয়েব সার্ভারের ভিতরে কাজ করতে অনুকরণ করতে পারে, ইত্যাদি।

যদি আপনার কোড একটি ফ্রেমওয়ার্কের মধ্যে চলছে (উদাহরণস্বরূপ, স্প্রিং), তাহলে প্রায় সবসময় এই ফ্রেমওয়ার্ক আপনার কোডে অবজেক্ট তৈরি এবং কনফিগারেশন পরিচালনা করে । অতএব, একটি বিশেষ পরীক্ষা প্লাগইন অপরিহার্য। উদাহরণ:

উদাহরণ 1. সঠিকভাবে কাজ করার জন্য এক্সটেনশনটি WebServerExtensionপরীক্ষা পদ্ধতিতে পাস করে ।URL

@Test
@ExtendWith(WebServerExtension.class)
void getProductList(@WebServerUrl String serverUrl) {
    WebClient webClient = new WebClient();
    // Use WebClient to connect to web server using serverUrl and verify response
    assertEquals(200, webClient.get(serverUrl + "/products").getResponseStatus());
}

এইভাবে পরীক্ষাগুলি সাধারণত স্প্রিং ফ্রেমওয়ার্কের সাথে কাজ করে এমন কোড পরীক্ষা করতে শুরু করে:

@ExtendWith(SpringExtension.class)
@ExtendWith(MockitoExtension.class)
class TestServiceTest {

    @MockBean
    TestService service;

    @Test
    void test() {
        assertNotNull(service); // Test succeeds
    }
}

SpringExtensionস্প্রিং ফ্রেমওয়ার্কের একটি পরীক্ষামূলক সংস্করণ তৈরি করে, কিন্তু MockitoExtentionআপনাকে জাল বস্তু তৈরি করতে দেয়। জাল বস্তু একটি খুব আকর্ষণীয় বিষয়, আমরা অবশ্যই এটি স্পর্শ করব, কিন্তু একটু পরে।

4.4 @টাইমআউট

একটি ছোট এবং আকর্ষণীয় টীকা দিয়ে এই লেকচারটি শেষ করা যাক @Timeout। এটি আপনাকে পরীক্ষা চালানোর জন্য সময় নির্ধারণ করতে দেয়। যদি পরীক্ষাটি টীকাতে উল্লেখ করা সময়ের চেয়ে বেশি সময় নেয়, তবে এটি ব্যর্থ বলে বিবেচিত হয়।

class TimeoutDemo {
    @Test
    @Timeout(value = 100, unit = TimeUnit.MILLISECONDS)
    void failsIfExecutionTimeExceeds100Milliseconds() {
        // test will fail if it takes more than 100 milliseconds
    }
}

এই আমাদের বক্তৃতা শেষ.

মন্তব্য
  • জনপ্রিয়
  • নতুন
  • পুরানো
মন্তব্য লেখার জন্য তোমাকে অবশ্যই সাইন ইন করতে হবে
এই পাতায় এখনও কোনো মন্তব্য নেই