7.1 @Suite টীকা

এবং আরো কয়েকটি প্রায়শই ব্যবহৃত টীকা। আপনি তাদের ব্যবহার না করলেও, আপনি অবশ্যই তাদের সাথে পরীক্ষা দেখতে পাবেন। তাই সেখানে কী লেখা আছে তা অন্তত সাধারণভাবে বোঝা দরকার।

পরীক্ষাগুলিকে গ্রুপে একত্রিত করা যেতে পারে। এই জন্য একটি বিশেষ টীকা আছে @Suite. উদাহরণ:

@Suite
@SuiteDisplayName("JUnit Platform Suite Demo")
@SelectPackages("com.codegym.test")
@IncludeClassNamePatterns(".*Tests")
class SuiteDemo {
}

এই ক্ষেত্রে, @Suite টীকাটি অন্যান্য টীকাগুলির সাথে যুক্ত করা হয়েছে৷

  • SuiteDisplayName- লগে পরীক্ষার গ্রুপের নাম সেট করে;
  • SelectPackages- প্যাকেজগুলির তালিকা সেট করে যেখানে পরীক্ষার ক্লাসগুলি দেখতে হবে;
  • IncludeClassNamePatterns- পরীক্ষার ক্লাস নামের প্যাটার্ন সেট করে।

কেন এমন অসুবিধা? ভাল কল্পনা করুন যে প্রকল্পের সমস্ত পরীক্ষা নির্বাহ করা হয়, ধরা যাক, 50 ঘন্টা। এবং প্রতিটি প্রতিশ্রুতির পরে তাদের কার্যকর করা খুব ব্যয়বহুল। এই ধরনের ক্ষেত্রে, কিছু পৃথক পরীক্ষার স্ক্রিপ্ট তৈরি করা এবং আরও নমনীয় উপায়ে পরীক্ষা সেট আপ করা দরকারী।

7.2 @অর্ডার টীকা

আরেকটি সাধারণ টীকা হল @TestMethodOrder। এটি আপনাকে পরীক্ষার ক্লাসে পরীক্ষার পদ্ধতিগুলিকে যে ক্রমে বলা হয় তা নির্দিষ্ট করার অনুমতি দেয়। এটি খুব দরকারী হতে পারে যখন আপনি জানেন যে পদ্ধতি কলগুলি একে অপরকে প্রভাবিত করে, তবে একটি নির্দিষ্ট ক্রমে, সবকিছু যেমন উচিত তেমন কাজ করা উচিত। বেশ প্রায়ই ব্যবহার করা হয়.

প্রথমে, আপনি বর্ণানুক্রমিকভাবে কল করার পদ্ধতিগুলি সেট করতে পারেন :

@TestMethodOrder(MethodOrderer.MethodName.class)
public class AlphanumericOrderUnitTest {

}

দ্বিতীয়ত, প্রতিটি পদ্ধতির অর্ডিন্যাল নম্বর সহ একটি বিশেষ টীকা থাকতে পারে।

@TestMethodOrder(OrderAnnotation.class)
public class OrderAnnotationUnitTest {

    @Test
    @Order(1)
    public void firstTest() {
    }

    @Test
    @Order(2)
    public void secondTest() {
    }
}

অথবা এমনকি একটি পৃথক শ্রেণী তৈরি করুন যা পরীক্ষাগুলিকে যে ক্রমে বলা হয় তা নির্দিষ্ট করবে:

@TestMethodOrder(CustomOrder.class)
public class CustomOrderUnitTest {

}

//sort method names alphabetically, but ignoring case
public class CustomOrder implements MethodOrderer {
    public void orderMethods(MethodOrdererContext context) {
        context.getMethodDescriptors().sort(
        (MethodDescriptor m1, MethodDescriptor m2)->
           m1.getMethod().getName().compareToIgnoreCase(m2.getMethod().getName()));
    }
}

7.3 @DisplayName টীকা

অবশেষে, প্রতিটি পরীক্ষার একটি নাম দেওয়া যেতে পারে। এটি সুবিধাজনক হতে পারে যদি প্রচুর পরীক্ষা থাকে এবং আপনি পরীক্ষার বিশেষ পরিস্থিতি (সাবসেট) তৈরি করেন। এই জন্য একটি বিশেষ টীকা আছে @DisplayName.

উদাহরণ:

@DisplayName("Friendly name for the test")
public class DisplayNameCustomTest {

    @Test
    @DisplayName("Input Validation")
    void inputData() {
    }

    @DisplayName("Checking critical situations")
    @Test
    void criticalCases() {
    }
}

পরীক্ষার ক্রম নির্ধারণের ক্ষেত্রে, এখানে আপনি একটি বিশেষ পদ্ধতি তৈরি করতে পারেন যা পরীক্ষা এবং পরীক্ষার পদ্ধতিগুলির নাম তৈরি করবে। উদাহরণ:

@DisplayNameGeneration(DisplayNameGeneratorUnitTest.ReplaceCamelCase.class)
class DisplayNameGeneratorUnitTest {

    @Test
    void camelCaseName() {
    }

    static class ReplaceCamelCase extends DisplayNameGenerator.Standard {
        @Override
        public String generateDisplayNameForClass(Class testClass) {
            return super.generateDisplayNameForClass(testClass).toUpperCase();
        }
 }
}

দেখো এটা কত সহজ :)