Command Line Input Validation Testing

Commons CLI এর জন্য Unit Testing - অ্যাপাচি কমন্স সিআলআই (Apache Commons CLI) - Java Technologies

211

Apache Commons CLI লাইব্রেরি কমান্ড লাইন আর্গুমেন্টের পার্সিং এবং ইনপুট ভ্যালিডেশন খুব সহজভাবে করতে সাহায্য করে। যেহেতু কমান্ড লাইন ইনপুটের মাধ্যমে ব্যবহারকারীরা বিভিন্ন ধরনের আর্গুমেন্ট সরবরাহ করতে পারেন, তাই ইনপুট ভ্যালিডেশন খুবই গুরুত্বপূর্ণ। ইনপুট ভ্যালিডেশন এর মাধ্যমে আপনি নিশ্চিত করতে পারেন যে, ব্যবহারকারী সঠিক আর্গুমেন্ট প্রদান করেছে এবং ভুল ইনপুটের জন্য উপযুক্ত ত্রুটি বার্তা প্রদর্শন করা হচ্ছে।

এখানে, আমরা Command Line Input Validation কীভাবে Apache Commons CLI লাইব্রেরির মাধ্যমে পরীক্ষা করা যায় এবং কীভাবে ত্রুটি বার্তা হ্যান্ডেল করা যায় তা দেখাবো।


1. Command Line Input Validation Setup

কমান্ড লাইন ইনপুট ভ্যালিডেশনের জন্য আপনি সাধারণত কিছু স্ট্যান্ডার্ড চেক করতে পারেন, যেমন:

  • আর্গুমেন্টের উপস্থিতি যাচাই করা
  • আর্গুমেন্টের টাইপ (যেমন সংখ্যা, স্ট্রিং, ইত্যাদি) যাচাই করা
  • আর্গুমেন্টের সীমা যাচাই করা (যেমন বয়স ১৮ থেকে ৬৫ এর মধ্যে হওয়া উচিত)

এখানে, Apache Commons CLI ব্যবহার করে আমরা ইনপুট ভ্যালিডেশন এর জন্য বিভিন্ন চেকিংয়ের উদাহরণ দেখাবো।


2. Example: Command Line Input Validation

ধরা যাক, আমরা একটি প্রোগ্রাম তৈরি করছি যা ব্যবহারকারীর নাম এবং বয়স নেবে এবং কিছু সুনির্দিষ্ট শর্তে ভ্যালিডেশন করবে।

2.1. কোড উদাহরণ: Command Line Input Validation

import org.apache.commons.cli.*;

public class CommandLineInputValidation {

    public static void main(String[] args) {
        // Option অবজেক্ট তৈরি করা
        Options options = new Options();

        // --name অপশন (আর্গুমেন্টের সাথে)
        options.addOption("n", "name", true, "Your name");

        // --age অপশন (আর্গুমেন্টের সাথে)
        options.addOption("a", "age", true, "Your age");

        // CommandLineParser ব্যবহার করা
        CommandLineParser parser = new DefaultParser();
        CommandLine cmd = null;

        try {
            // কমান্ড লাইন আর্গুমেন্ট পার্স করা
            cmd = parser.parse(options, args);

            // --name অপশন চেক করা
            if (!cmd.hasOption("n")) {
                System.out.println("Error: Name is required.");
                printHelp(options);
                System.exit(1);
            }

            // --age অপশন চেক করা
            if (!cmd.hasOption("a")) {
                System.out.println("Error: Age is required.");
                printHelp(options);
                System.exit(1);
            }

            String name = cmd.getOptionValue("n");
            String ageString = cmd.getOptionValue("a");

            // নাম ভ্যালিডেশন
            if (name.length() < 3) {
                System.out.println("Error: Name must be at least 3 characters long.");
                System.exit(1);
            }

            // বয়স ভ্যালিডেশন
            int age;
            try {
                age = Integer.parseInt(ageString);
                if (age < 18 || age > 65) {
                    System.out.println("Error: Age must be between 18 and 65.");
                    System.exit(1);
                }
            } catch (NumberFormatException e) {
                System.out.println("Error: Age must be a valid number.");
                System.exit(1);
            }

            // আউটপুট
            System.out.println("Name: " + name);
            System.out.println("Age: " + age);

        } catch (ParseException e) {
            System.out.println("Error: Invalid command line arguments.");
            System.out.println("Reason: " + e.getMessage());
            printHelp(options);
            System.exit(1);
        }
    }

    // HelpFormatter ব্যবহার করে সাহায্য বার্তা
    private static void printHelp(Options options) {
        HelpFormatter formatter = new HelpFormatter();
        formatter.printHelp("CommandLineInputValidation", options);
    }
}

ব্যাখ্যা:

  1. Option Object:
    • --name এবং --age অপশন তৈরি করা হয়েছে এবং তাদের জন্য আর্গুমেন্ট প্রদান করতে বলা হয়েছে।
  2. Input Validation:
    • Name Validation: যদি ব্যবহারকারীর নাম ৩টি অক্ষরের কম হয়, তবে একটি ত্রুটি বার্তা প্রদর্শন করা হয়।
    • Age Validation: বয়সটি একটি পূর্ণসংখ্যা হতে হবে এবং ১৮ থেকে ৬৫ এর মধ্যে হতে হবে। অন্যথায়, একটি ত্রুটি বার্তা দেখানো হয়।
  3. ParseException Handling:
    • যদি পার্সিংয়ের সময় কোনো সমস্যা হয়, তবে ParseException ব্যবহার করা হয় এবং কাস্টম ত্রুটি বার্তা প্রদর্শন করা হয়।
  4. HelpFormatter:
    • যদি কোনো আর্গুমেন্ট সঠিকভাবে না থাকে, তাহলে ব্যবহারকারীকে সাহায্য বার্তা প্রদর্শন করা হয়।

3. Command Line Input Validation Testing

এখন, আপনি বিভিন্ন ইনপুট দিয়ে এই প্রোগ্রামটি পরীক্ষা করতে পারেন এবং কীভাবে এটি ইনপুট যাচাই করে তা দেখুন।

উদাহরণ 1: সঠিক ইনপুট

java CommandLineInputValidation -n John -a 30

আউটপুট:

Name: John
Age: 30

উদাহরণ 2: নামের দৈর্ঘ্য কম

java CommandLineInputValidation -n Jo -a 30

আউটপুট:

Error: Name must be at least 3 characters long.

উদাহরণ 3: বয়স ভুল

java CommandLineInputValidation -n John -a 70

আউটপুট:

Error: Age must be between 18 and 65.

উদাহরণ 4: বয়স পূর্ণসংখ্যা নয়

java CommandLineInputValidation -n John -a abc

আউটপুট:

Error: Age must be a valid number.

উদাহরণ 5: আর্গুমেন্ট না দেওয়া

java CommandLineInputValidation

আউটপুট:

Error: Name is required.
Usage: CommandLineInputValidation
 -a <age>     Your age
 -h, --help   Show help
 -n <name>    Your name

4. Logging Command Line Input Validation

কমান্ড লাইন ইনপুটের ভ্যালিডেশন টেস্ট করার সময়, আপনি লগিং ব্যবহার করে ইনপুটের বিশদ তথ্য সংরক্ষণ করতে পারেন। এর জন্য Java Util Logging বা Log4j লাইব্রেরি ব্যবহার করা যেতে পারে। নিচে java.util.logging ব্যবহার করে লগিং করার একটি উদাহরণ দেওয়া হলো।

import java.util.logging.*;

public class CommandLineInputValidationWithLogging {

    private static final Logger logger = Logger.getLogger(CommandLineInputValidationWithLogging.class.getName());

    public static void main(String[] args) {
        // Logger setup
        ConsoleHandler consoleHandler = new ConsoleHandler();
        logger.addHandler(consoleHandler);
        logger.setLevel(Level.ALL);

        // Validation logic (similar to previous example)
        // Log input and validation steps...
        logger.info("Processing command line input.");
    }
}

এটি লগ ফাইলে বা কনসোলে সমস্ত ভ্যালিডেশন স্টেপস ট্র্যাক করবে, যেমন আর্গুমেন্ট যাচাই এবং ভ্যালিডেশন স্টেটমেন্ট।


সারাংশ

Apache Commons CLI লাইব্রেরি দিয়ে Command Line Input Validation টেস্টিং খুবই সহজে করা যায়। আপনি আর্গুমেন্টের উপস্থিতি, টাইপ এবং পরিসীমা যাচাই করতে পারেন এবং সঠিক ত্রুটি বার্তা প্রদর্শন করতে পারেন। HelpFormatter ব্যবহার করে কাস্টম সাহায্য বার্তা তৈরি করা হয়, এবং ParseException দিয়ে ত্রুটি হ্যান্ডলিং করা যায়। লগিং ব্যবহারের মাধ্যমে ইনপুট এবং আউটপুটের বিশদ ট্র্যাক করা সম্ভব হয়, যা ডিবাগিংয়ের জন্য খুবই উপকারী।

Content added By
Promotion

Are you sure to start over?

Loading...