Unit Testing এবং Code Coverage

Java Technologies - অ্যাপাচি অ্যান্ট (Apache ANT)
355
355

Apache ANT-এ Unit Testing এবং Code Coverage গুরুত্বপূর্ণ অংশ, যা প্রজেক্টের কোডের গুণমান নিশ্চিত করতে সাহায্য করে। ANT-এর মাধ্যমে আপনি আপনার কোডের টেস্ট রান করতে পারেন এবং টেস্ট কভারেজ বা কোড কভারেজ ট্র্যাক করতে পারেন। এই প্রক্রিয়া আপনাকে আপনার অ্যাপ্লিকেশনটি পরীক্ষা করার সুযোগ দেয় এবং নিশ্চিত করে যে কোডে কোন গুরুত্বপূর্ণ লজিকের পরীক্ষা হয়নি।

ANT-এ ইউনিট টেস্টিং এবং কোড কভারেজের জন্য বেশ কিছু টুল ইন্টিগ্রেট করা যেতে পারে, যেমন JUnit, Emma, Cobertura, এবং JaCoCo। এই টুলগুলি ANT টাস্ক হিসেবে সংজ্ঞায়িত করা যায় এবং ব্যবহার করা যায়।


1. Unit Testing with JUnit

ANT-এ JUnit টেস্ট চালানোর জন্য junit টাস্ক ব্যবহার করা হয়। এটি কোডের ইউনিট টেস্ট রান করতে সহায়ক এবং আপনাকে টেস্ট ফলাফল রিপোর্ট করতে সক্ষম করে।

JUnit টেস্ট রান করা

  1. JUnit টাস্ক ব্যবহারের জন্য junit টাস্কফাইল তৈরি করুন:

    প্রথমে, আপনাকে আপনার build.xml ফাইলে JUnit টাস্কটি যোগ করতে হবে।

    <project name="UnitTesting" basedir=".">
        <!-- JUnit Task Definition -->
        <taskdef name="junit" 
                 classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask"
                 classpath="libs/junit.jar"/>
        
        <!-- Unit Test Target -->
        <target name="run-tests">
            <mkdir dir="test-reports"/>
            <junit printsummary="yes" haltonfailure="yes">
                <test name="com.example.MyTestClass"/>
                <formatter type="xml" usefile="true" />
                <batchtest fork="yes">
                    <fileset dir="test-classes">
                        <include name="**/*Test.class"/>
                    </fileset>
                </batchtest>
            </junit>
        </target>
    </project>
    

    এখানে:

    • <taskdef>: JUnit টাস্কটি ANT-এ যুক্ত করা হচ্ছে।
    • <junit>: JUnit টেস্ট রান করার জন্য ব্যবহার করা হচ্ছে।
    • <test>: একটি নির্দিষ্ট টেস্ট ক্লাসের নাম দিয়ে একক টেস্ট চালানো হচ্ছে।
    • <batchtest>: একাধিক টেস্ট ক্লাস একসাথে রান করার জন্য ব্যবহৃত হচ্ছে।
  2. JUnit টেস্ট ফাইল উদাহরণ:

    উদাহরণস্বরূপ, একটি সাধারণ JUnit টেস্ট ক্লাস MyTestClass.java:

    import org.junit.Test;
    import static org.junit.Assert.*;
    
    public class MyTestClass {
    
        @Test
        public void testAdd() {
            int result = 2 + 3;
            assertEquals(5, result);
        }
    }
    
  3. JUnit টেস্ট রিপোর্ট:
    টেস্ট শেষে একটি XML ফরম্যাটে রিপোর্ট তৈরি হবে, যা আপনি পরে বিশ্লেষণ করতে পারবেন।

2. Code Coverage Tools (Emma, Cobertura, JaCoCo)

Code coverage হল একটি পরিমাপ যা জানায় কতটুকু কোড টেস্ট কভার করেছে। কোড কভারেজের জন্য জনপ্রিয় টুলগুলি হলো Emma, Cobertura, এবং JaCoCo। এই টুলগুলি ANT টাস্ক হিসেবে ইন্টিগ্রেট করা যায়।

2.1. Emma ব্যবহার করে Code Coverage

Emma একটি ওপেন সোর্স টুল যা কোড কভারেজ পরিমাপ করতে ব্যবহৃত হয়। ANT-এ Emma টাস্ক ব্যবহার করে আপনি কোড কভারেজ দেখতে পারেন।

  1. Emma টাস্ক সংজ্ঞায়িত করা:

    <project name="CodeCoverage" basedir=".">
        <taskdef name="emma"
                 classname="emma.ant.AntTask"
                 classpath="libs/emma.jar"/>
        
        <!-- Emma Coverage Target -->
        <target name="run-coverage">
            <emma enable="true">
                <instrument todir="instrumented-classes">
                    <fileset dir="build/classes"/>
                </instrument>
                <report format="html" outfile="coverage-report">
                    <fileset dir="instrumented-classes"/>
                </report>
            </emma>
        </target>
    </project>
    

    এখানে:

    • <emma>: Emma টুলটি চালানোর জন্য ব্যবহৃত হয়।
    • <instrument>: কোড ইনস্ট্রুমেন্টেশন টুলের মাধ্যমে কোডে কভারেজ ডেটা যোগ করে।
    • <report>: কোড কভারেজ রিপোর্ট তৈরি করে (HTML, XML ইত্যাদি ফরম্যাটে)।
  2. Emma Coverage রিপোর্ট:
    Emma টুলটি কোড কভারেজ রিপোর্ট তৈরি করবে যা HTML বা XML ফরম্যাটে হতে পারে। এটি আপনাকে টেস্ট করা কোডের কভারেজের পরিমাণ দেখাবে।

2.2. Cobertura ব্যবহার করে Code Coverage

Cobertura একটি ওপেন সোর্স টুল যা Java কোডের কভারেজ পরিমাপ করতে ব্যবহৃত হয়। ANT-এ Cobertura ইন্টিগ্রেট করার জন্য কোডের ইনস্ট্রুমেন্টেশন এবং কভারেজ রিপোর্ট তৈরি করা যায়।

  1. Cobertura টাস্ক সংজ্ঞায়িত করা:

    <project name="CoberturaExample" basedir=".">
        <taskdef resource="com/cobertura/ant/taskdefs.properties"/>
        
        <target name="run-coverage">
            <mkdir dir="coverage-report"/>
            <cobertura-instrument destdir="instrumented-classes">
                <fileset dir="build/classes"/>
            </cobertura-instrument>
    
            <junit printsummary="yes">
                <batchtest>
                    <fileset dir="instrumented-classes"/>
                </batchtest>
            </junit>
    
            <cobertura-report format="html" destdir="coverage-report">
                <fileset dir="instrumented-classes"/>
            </cobertura-report>
        </target>
    </project>
    
  2. Cobertura Coverage রিপোর্ট:
    Cobertura HTML কভারেজ রিপোর্ট তৈরি করবে যা আপনি ব্রাউজারে দেখতে পারবেন।

2.3. JaCoCo ব্যবহার করে Code Coverage

JaCoCo একটি উন্নত এবং জনপ্রিয় কোড কভারেজ টুল। এটি ANT-এ সহজেই ইন্টিগ্রেট করা যায়।

  1. JaCoCo টাস্ক সংজ্ঞায়িত করা:

    <project name="JaCoCoExample" basedir=".">
        <taskdef name="jacoco" classname="org.jacoco.ant.Task">
            <classpath>
                <pathelement location="libs/jacocoant.jar"/>
            </classpath>
        </taskdef>
    
        <target name="run-tests">
            <jacoco:instrument destdir="instrumented-classes">
                <fileset dir="build/classes"/>
            </jacoco:instrument>
    
            <junit printsummary="true">
                <batchtest>
                    <fileset dir="instrumented-classes"/>
                </batchtest>
            </junit>
    
            <jacoco:report>
                <executiondata>
                    <file file="coverage.exec"/>
                </executiondata>
                <structure>
                    <classfiles>
                        <fileset dir="instrumented-classes"/>
                    </classfiles>
                </structure>
                <html destdir="coverage-report"/>
            </jacoco:report>
        </target>
    </project>
    
  2. JaCoCo Coverage রিপোর্ট:
    JaCoCo HTML কভারেজ রিপোর্ট তৈরি করে, যা কভারেজ সম্পর্কিত বিস্তারিত তথ্য প্রদান করে।

সারাংশ

  • Unit Testing with JUnit: ANT-এ JUnit টাস্ক ব্যবহার করে আপনি ইউনিট টেস্ট চালাতে পারেন এবং টেস্টের ফলাফল XML বা HTML রিপোর্ট হিসেবে দেখতে পারেন।
  • Code Coverage: Emma, Cobertura, এবং JaCoCo টুল ব্যবহার করে ANT-এ কোড কভারেজ ট্র্যাক করা যায়। এগুলি আপনার কোডের কতটুকু অংশ টেস্ট করা হয়েছে তা পরিমাপ করে এবং কভারেজ রিপোর্ট তৈরি করে।

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

common.content_added_by

JUnit এবং TestNG ইন্টিগ্রেশন

218
218

Apache ANT-এর মাধ্যমে আপনি JUnit এবং TestNG টেস্ট ফ্রেমওয়ার্কের ইন্টিগ্রেশন করতে পারেন, যা আপনাকে আপনার কোডের অটোমেটেড টেস্টিং চালানোর জন্য ব্যবহৃত হবে। ANT-এ JUnit এবং TestNG টেস্ট রান করতে গেলে আপনি বিশেষভাবে নির্ধারিত টাস্ক ব্যবহার করবেন যা ANT বিল্ড স্ক্রিপ্টে অন্তর্ভুক্ত করতে হবে।

এখানে JUnit এবং TestNG টেস্ট ফ্রেমওয়ার্ক ইন্টিগ্রেশনের বিস্তারিত বর্ণনা দেয়া হলো:


1. JUnit ইন্টিগ্রেশন

JUnit একটি জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক যা Java প্রোগ্রামিং ভাষার জন্য ব্যবহৃত হয়। Apache ANT-এ JUnit টেস্ট রান করার জন্য junit টাস্ক ব্যবহার করা হয়।

JUnit টেস্ট রান করার উদাহরণ

প্রথমে, আপনাকে ANT-এ junit টাস্ক ব্যবহার করার জন্য JUnit JAR ফাইলটি classpath-এ অন্তর্ভুক্ত করতে হবে।

build.xml ফাইলের উদাহরণ:

<?xml version="1.0" encoding="UTF-8"?>
<project name="JUnitIntegration" default="test" basedir=".">

    <!-- Path to the JUnit JAR -->
    <path id="junit.classpath">
        <fileset dir="libs">
            <include name="junit-4.x.x.jar"/>
        </fileset>
    </path>

    <!-- Test target -->
    <target name="test">
        <junit printsummary="true">
            <classpath>
                <path refid="junit.classpath"/>
                <pathelement path="build/classes"/>
            </classpath>
            <test name="com.example.TestClass"/>
        </junit>
    </target>

</project>

কোড ব্যাখ্যা:

  1. <path id="junit.classpath">: JUnit JAR ফাইলটি libs ডিরেক্টরি থেকে classpath-এ যুক্ত করা হয়েছে।
  2. <junit>: এটি JUnit টেস্ট রান করার জন্য ব্যবহৃত টাস্ক।
    • printsummary="true": টেস্টের সারাংশ প্রদর্শন করবে।
    • <classpath>: টেস্টের জন্য প্রয়োজনীয় classpath এখানে নির্ধারণ করা হচ্ছে।
    • <test name="com.example.TestClass"/>: এখানে com.example.TestClass ক্লাসের টেস্ট রান করতে বলা হচ্ছে।

JUnit টেস্ট রান করার কমান্ড:

ant test

এটি JUnit টেস্ট চালাবে এবং টেস্টের ফলাফল কনসোলে দেখাবে।


2. TestNG ইন্টিগ্রেশন

TestNG একটি আরও শক্তিশালী টেস্টিং ফ্রেমওয়ার্ক যা JUnit-এর চেয়ে বেশি ফিচার এবং কনফিগারেশন অপশন দেয়। Apache ANT-এ TestNG টেস্ট রান করার জন্য testng টাস্ক ব্যবহার করা হয়।

TestNG টেস্ট রান করার উদাহরণ

প্রথমে, আপনাকে TestNG JAR ফাইলটি classpath-এ অন্তর্ভুক্ত করতে হবে।

build.xml ফাইলের উদাহরণ:

<?xml version="1.0" encoding="UTF-8"?>
<project name="TestNGIntegration" default="test" basedir=".">

    <!-- Path to TestNG JAR -->
    <path id="testng.classpath">
        <fileset dir="libs">
            <include name="testng-7.x.x.jar"/>
        </fileset>
    </path>

    <!-- Test target -->
    <target name="test">
        <taskdef resource="org/testng/ant/testng.properties"/>
        <testng classpathref="testng.classpath">
            <suite-fileset dir="test" includes="**/*Test.xml"/>
        </testng>
    </target>

</project>

কোড ব্যাখ্যা:

  1. <path id="testng.classpath">: TestNG JAR ফাইলটি libs ডিরেক্টরি থেকে classpath-এ যুক্ত করা হয়েছে।
  2. <taskdef resource="org/testng/ant/testng.properties"/>: এটি TestNG টাস্কটি ডিফাইন করতে ব্যবহৃত হয়। TestNG-এর built-in ANT টাস্ক ডেফিনিশন (testng.properties) এখানে ব্যবহৃত হচ্ছে।
  3. <testng>: এটি TestNG টেস্ট রান করার জন্য ব্যবহৃত টাস্ক।
    • classpathref="testng.classpath": TestNG টাস্কের জন্য classpath উল্লেখ করা হচ্ছে।
    • <suite-fileset>: TestNG suite ফাইল বা XML ফাইলের পাথ নির্ধারণ করা হচ্ছে (যেমন test/**Test.xml), যা টেস্ট গুলি চালাবে।

TestNG টেস্ট রান করার কমান্ড:

ant test

এটি TestNG টেস্ট চালাবে এবং TestNG XML ফাইল অনুযায়ী টেস্টের ফলাফল প্রদর্শন করবে।


JUnit এবং TestNG এর মধ্যে পার্থক্য

FeatureJUnitTestNG
Configurationখুব সহজ কনফিগারেশনআরো ফ্লেক্সিবল কনফিগারেশন এবং অ্যাডভান্স অপশন
Parallel Test Executionসমর্থন নেইসমর্থন রয়েছে
Test Groupsনেইটেস্ট গ্রুপের মাধ্যমে টেস্ট কন্ট্রোল করা যায়
Data Providersনেই@DataProvider এর মাধ্যমে ডাটা পাস করা যায়
Test Dependenciesসমর্থন নেইটেস্ট ডিপেন্ডেন্সি সমর্থন করে

3. অন্যান্য ফিচার

  • JUnit এবং TestNG এর রিপোর্টিং:
    • JUnit এবং TestNG টেস্টের ফলাফল XML ফরম্যাটে রেকর্ড করতে পারে এবং আপনি ANT ব্যবহার করে সেগুলিকে আরও বিশ্লেষণ করতে পারেন।
  • ফলাফল আউটপুট:
    • JUnit: আপনি printsummary="true" ব্যবহার করে একটি সিম্পল আউটপুট দেখতে পারেন।
    • TestNG: TestNG আরও বিস্তারিত রিপোর্ট এবং পরিসংখ্যান প্রদান করে, এবং এটি HTML রিপোর্টও জেনারেট করতে পারে।

সারাংশ

  • JUnit এবং TestNG দুইটি জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক যা ANT ব্যবহার করে ইন্টিগ্রেট করা সম্ভব।
  • JUnit: junit টাস্ক ব্যবহার করে টেস্ট রানের জন্য classpath এবং টেস্ট ক্লাস নির্ধারণ করতে হয়।
  • TestNG: testng টাস্ক ব্যবহার করে TestNG suite XML ফাইল এবং classpath ব্যবহার করে টেস্ট রানের জন্য কনফিগার করতে হয়।

এই ইন্টিগ্রেশন আপনাকে ANT দিয়ে আপনার জাভা প্রজেক্টের টেস্টিং কার্যক্রম পরিচালনা করতে সহায়তা করবে।

common.content_added_by

Unit Test পরিচালনা এবং Build Automation

237
237

Apache ANT একটি শক্তিশালী বিল্ড টুল যা শুধুমাত্র কোড কম্পাইল এবং প্যাকেজিংয়ের জন্য ব্যবহৃত হয় না, বরং এটি unit testing এবং build automation-এর জন্যও ব্যাপকভাবে ব্যবহৃত হয়। ANT এর সাহায্যে আপনি আপনার প্রজেক্টের বিল্ড প্রক্রিয়ার মধ্যে unit testing অন্তর্ভুক্ত করতে পারেন এবং এটি স্বয়ংক্রিয়ভাবে করতে পারেন।

এই গাইডে আমরা আলোচনা করব কিভাবে ANT ব্যবহার করে unit testing পরিচালনা এবং build automation সেটআপ করা যায়।


1. Unit Test পরিচালনা ANT দিয়ে

Apache ANT দিয়ে unit test পরিচালনা করতে সাধারণত JUnit ব্যবহৃত হয়। JUnit হল একটি জনপ্রিয় unit testing ফ্রেমওয়ার্ক যা Java প্রোগ্রামিং ভাষায় লেখা কোডের জন্য ব্যবহৃত হয়। ANT-এ JUnit টাস্ক ব্যবহার করে আপনি unit tests রান করতে পারেন এবং ফলাফল দেখাতে পারেন।

JUnit টাস্ক ব্যবহার করে Unit Test চালানো

JUnit টাস্কটি ANT এর বিল্ড ফাইলে অন্তর্ভুক্ত করতে হয়, এবং এরপর আপনি JUnit টেস্ট ক্লাসগুলি রান করতে পারেন। এর জন্য JUnit jar ফাইল আপনার classpath-এ অন্তর্ভুক্ত থাকতে হবে।

প্রয়োজনীয় JAR ফাইল

JUnit টাস্ক কাজ করার জন্য JUnit এবং Ant-এর ant-junit লাইব্রেরি প্রয়োজন। JUnit এর jar ফাইল সাধারণত আপনার প্রজেক্টের lib ডিরেক্টরিতে থাকতে হবে অথবা classpath-এ অন্তর্ভুক্ত করা হতে পারে।

ANT বিল্ড ফাইলে Unit Test যুক্ত করা

এখানে একটি উদাহরণ দেখানো হলো যেখানে ANT দিয়ে JUnit টেস্ট রান করা হবে।

build.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project name="JUnitExample" default="test" basedir=".">
    
    <!-- Define classpath for JUnit -->
    <path id="junit.classpath">
        <fileset dir="lib">
            <include name="junit-4.13.2.jar"/>
        </fileset>
    </path>

    <!-- Target to compile Java classes -->
    <target name="compile">
        <mkdir dir="build/classes"/>
        <javac srcdir="src" destdir="build/classes" classpathref="junit.classpath"/>
    </target>

    <!-- Target to run JUnit tests -->
    <target name="test" depends="compile">
        <mkdir dir="build/test-results"/>
        <junit printsummary="yes" haltonfailure="yes">
            <!-- Test classes location -->
            <classpath>
                <path refid="junit.classpath"/>
                <pathelement location="build/classes"/>
            </classpath>
            <!-- Specify the test class -->
            <test name="com.example.TestExample"/>
            <formatter type="plain"/>
        </junit>
    </target>
</project>

বিল্ড ফাইল ব্যাখ্যা:

  1. Classpath Setup:
    • junit.classpath-এ junit-4.13.2.jar যোগ করা হয়েছে।
    • এটি ANT কে JUnit টাস্ক চলানোর জন্য প্রয়োজনীয় লাইব্রেরি সম্পর্কে জানায়।
  2. Compile Target:
    • compile টার্গেট Java ক্লাস কম্পাইল করে build/classes ডিরেক্টরিতে রাখে।
  3. JUnit Test Target:
    • test টার্গেট compile টার্গেটের ওপর নির্ভরশীল, তাই প্রথমে কোড কম্পাইল হবে এবং পরে JUnit টেস্ট চালানো হবে।
    • <junit> ট্যাগটি JUnit টেস্ট চালাতে ব্যবহৃত হয় এবং haltonfailure="yes" দিয়ে যদি কোনো টেস্ট ফেইল হয়, তবে বিল্ডও ফেইল করবে।
    • printsummary="yes" দিয়ে টেস্টের সারাংশ কমান্ড লাইনে প্রিন্ট করা হবে।
  4. Test Class Specification:
    • <test name="com.example.TestExample"/> ট্যাগে টেস্ট ক্লাসের পূর্ণ নাম উল্লেখ করা হয়েছে, যার মধ্যে আপনার unit tests থাকবে।

2. JUnit টেস্ট ক্লাস উদাহরণ

এই বিল্ড ফাইলে ব্যবহার করার জন্য একটি সাধারণ JUnit টেস্ট ক্লাস নিচে দেওয়া হলো:

TestExample.java:

package com.example;

import org.junit.Test;
import static org.junit.Assert.*;

public class TestExample {

    @Test
    public void testAdd() {
        int a = 5;
        int b = 10;
        int sum = a + b;
        assertEquals(15, sum); // Check if sum is 15
    }

    @Test
    public void testSubtract() {
        int a = 10;
        int b = 5;
        int difference = a - b;
        assertEquals(5, difference); // Check if difference is 5
    }
}

এখানে দুটি মৌলিক টেস্ট করা হয়েছে:

  • testAdd(): দুটি সংখ্যার যোগফল পরীক্ষা করছে।
  • testSubtract(): দুটি সংখ্যার বিয়োগফল পরীক্ষা করছে।

3. Build Automation with Unit Test Integration

ANT এর সাহায্যে build automation করার মাধ্যমে আপনি একাধিক টাস্ক একযোগে সম্পন্ন করতে পারবেন, যেমন কোড কম্পাইল করা, টেস্ট রান করা, এবং বিল্ড তৈরি করা।

Automation উদাহরণ

একটি পূর্ণাঙ্গ উদাহরণ যেটিতে unit test এবং বিল্ড অটোমেশন সমন্বিত থাকবে:

build.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project name="FullBuildExample" default="full-build" basedir=".">
    
    <!-- Classpath for JUnit -->
    <path id="junit.classpath">
        <fileset dir="lib">
            <include name="junit-4.13.2.jar"/>
        </fileset>
    </path>

    <!-- Clean target to delete previous build outputs -->
    <target name="clean">
        <delete dir="build"/>
    </target>

    <!-- Compile Java source code -->
    <target name="compile" depends="clean">
        <mkdir dir="build/classes"/>
        <javac srcdir="src" destdir="build/classes" classpathref="junit.classpath"/>
    </target>

    <!-- Run Unit Tests -->
    <target name="test" depends="compile">
        <mkdir dir="build/test-results"/>
        <junit printsummary="yes" haltonfailure="yes">
            <classpath>
                <path refid="junit.classpath"/>
                <pathelement location="build/classes"/>
            </classpath>
            <test name="com.example.TestExample"/>
            <formatter type="plain"/>
        </junit>
    </target>

    <!-- Create JAR file -->
    <target name="create-jar" depends="test">
        <mkdir dir="build/jar"/>
        <jar destfile="build/jar/myproject.jar" basedir="build/classes"/>
    </target>

    <!-- Full build target -->
    <target name="full-build" depends="create-jar">
        <echo message="Build complete!" />
    </target>

</project>

বিল্ড ফাইলের বিস্তারিত:

  1. clean: পূর্বের আউটপুট ফাইলগুলো মুছে ফেলে।
  2. compile: কোড কম্পাইল করে build/classes ডিরেক্টরিতে রাখা হয়।
  3. test: compile টার্গেটের পর টেস্ট রান করা হয়।
  4. create-jar: টেস্ট সফল হলে একটি JAR ফাইল তৈরি করা হয়।
  5. full-build: এটি সমস্ত টার্গেটকে একত্রিত করে পুরো বিল্ড প্রক্রিয়া সম্পন্ন করে।

4. সারাংশ

  • Unit Testing: ANT এর মাধ্যমে JUnit টাস্ক ব্যবহার করে unit testing পরিচালনা করা যায়। JUnit টেস্ট ক্লাস চালানোর জন্য junit টাস্ক এবং taskdef ব্যবহার করা হয়।
  • Build Automation: ANT ব্যবহারে আপনি সহজেই build automation করতে পারেন। কোড কম্পাইল, unit test রান, JAR তৈরি ইত্যাদি সমস্ত কাজ একাধিক টার্গেটের মাধ্যমে অটোমেটিকভাবে করা যেতে পারে।
  • JAR ফাইল তৈরি: Unit test সফল হলে, এটি একটি JAR ফাইল তৈরি করতে পারে, যা প্রজেক্টের পরবর্তী প্রয়োজনে ব্যবহার করা যাবে।

এইভাবে, ANT দিয়ে আপনি একটি পূর্ণাঙ্গ build automation পদ্ধতি তৈরি করতে পারেন, যা আপনার কোডের একাধিক ধাপ সম্পন্ন করতে সক্ষম।

common.content_added_by

Test Reports এবং Code Coverage রিপোর্ট তৈরি করা

240
240

Apache ANT ব্যবহার করে test reports এবং code coverage রিপোর্ট তৈরি করা একটি সাধারণ প্রক্রিয়া যা আপনার বিল্ড প্রক্রিয়াকে আরও কার্যকরী এবং স্বচ্ছ করে তোলে। এখানে আমরা JUnit টেস্ট রিপোর্ট এবং code coverage রিপোর্ট তৈরি করার জন্য যে টুলগুলো এবং কৌশলগুলো ব্যবহার করা যায়, তা আলোচনা করব।


১. JUnit Test Reports তৈরি করা

JUnit টেস্ট রিপোর্ট তৈরি করা ANT-এর মাধ্যমে খুবই সহজ এবং কার্যকরী। আপনি যদি JUnit টেস্ট ব্যবহার করেন, তবে ANT junit টাস্কটি ব্যবহার করে টেস্ট রিপোর্ট তৈরি করতে সক্ষম হবে।

JUnit Test Reports তৈরি করার পদক্ষেপ:

  1. JUnit টাস্ক কনফিগার করা: ANT এ junit টাস্ক ব্যবহার করে আপনি টেস্ট চালাতে পারেন এবং রিপোর্ট তৈরি করতে পারেন।
<project name="JUnitTestExample" default="run-tests">
    <!-- ক্লাসপাথ নির্দিষ্ট করা -->
    <path id="test.classpath">
        <fileset dir="lib">
            <include name="*.jar"/>
        </fileset>
    </path>

    <!-- টার্গেট নির্ধারণ -->
    <target name="run-tests">
        <junit printsummary="true" haltonerror="yes" haltonfailure="yes">
            <classpath refid="test.classpath"/>
            <test name="com.example.tests.MyTestClass"/>
            <formatter type="xml" usefile="true"/>
        </junit>
    </target>
</project>

এখানে:

  • junit টাস্কটি টেস্ট ক্লাস চালাবে।
  • printsummary="true" টেস্টের সংক্ষিপ্ত সারাংশ দেখাবে।
  • haltonerror="yes" এবং haltonfailure="yes" এর মাধ্যমে যদি কোনো টেস্ট ব্যর্থ হয়, তবে বিল্ড বন্ধ হয়ে যাবে।
  • formatter ট্যাগটি রিপোর্ট আউটপুট ফরম্যাট নির্ধারণ করে। এখানে XML ফরম্যাটে রিপোর্ট তৈরি করা হচ্ছে।
  1. Test Reports ফাইল: টেস্ট রান করার পরে ANT একটি XML ফাইল তৈরি করবে, যা আপনি JUnit টেস্ট রিপোর্টের ফলাফল দেখতে ব্যবহার করতে পারেন।

XML রিপোর্টের আউটপুট উদাহরণ:

<testsuite errors="0" failures="1" name="MyTestClass" tests="3" time="0.1">
    <testcase classname="com.example.tests.MyTestClass" name="testMethod1" time="0.02"/>
    <testcase classname="com.example.tests.MyTestClass" name="testMethod2" time="0.03">
        <failure message="Expected true but was false"/>
    </testcase>
    <testcase classname="com.example.tests.MyTestClass" name="testMethod3" time="0.01"/>
</testsuite>

এখানে:

  • errors এবং failures হলো টেস্টের ফলাফল, যেখানে 1 failure এবং 0 error রয়েছে।
  • প্রতিটি testcase টেস্টের নাম, রান টাইম এবং সম্ভাব্য ত্রুটির তথ্য প্রদর্শন করে।

২. Code Coverage রিপোর্ট তৈরি করা

Code Coverage হল একটি মেট্রিক যা কোডের কতটা অংশ টেস্ট করা হয়েছে তা নির্দেশ করে। Apache ANT নিজে থেকে কোড কভারেজ তৈরি করতে পারে না, তবে Cobertura, JaCoCo এবং Emma এর মতো টুলগুলির সাহায্যে এটি করা সম্ভব।

JaCoCo ব্যবহার করে Code Coverage রিপোর্ট তৈরি করা

JaCoCo হল একটি জনপ্রিয় কোড কভারেজ টুল যা ANT এর মাধ্যমে ইন্টিগ্রেট করা যায়। নিচে JaCoCo ব্যবহার করে কভারেজ রিপোর্ট তৈরি করার উদাহরণ দেওয়া হল:

  1. JaCoCo ইনস্টল করা: JaCoCo JAR ফাইল ANT ক্লাসপাথে যোগ করতে হবে। এটি lib/ ফোল্ডারে রাখা উচিত।
  2. JaCoCo টাস্ক ব্যবহার করা:
<project name="CodeCoverageExample" default="run-tests-with-coverage">
    <!-- ক্লাসপাথ সেটআপ -->
    <path id="test.classpath">
        <fileset dir="lib">
            <include name="jacocoant-0.8.7.jar"/>
            <include name="*.jar"/>
        </fileset>
    </path>

    <!-- টাস্কের জন্য JaCoCo কভারেজ রিপোর্ট -->
    <target name="run-tests-with-coverage">
        <!-- JaCoCo কভারেজ ডেটা সংগ্রহ করা -->
        <taskdef name="jacoco" classname="org.jacoco.ant.Task">
            <classpath refid="test.classpath"/>
        </taskdef>

        <!-- JaCoCo টাস্ক চালানো -->
        <jacoco>
            <exec>
                <classpath refid="test.classpath"/>
                <junit printsummary="true">
                    <test name="com.example.tests.MyTestClass"/>
                </junit>
            </exec>

            <!-- কভারেজ রিপোর্ট তৈরি করা -->
            <report>
                <html destdir="coverage-reports"/>
                <xml destfile="coverage-reports/coverage.xml"/>
            </report>
        </jacoco>
    </target>
</project>

এখানে:

  • taskdef ব্যবহার করে JaCoCo টাস্ক সংজ্ঞায়িত করা হয়েছে।
  • <exec> টাস্কটি টেস্ট চালাবে এবং কভারেজ ডেটা সংগ্রহ করবে।
  • <report> টাস্কটি কভারেজ রিপোর্ট তৈরি করবে। html ফরম্যাটে রিপোর্ট একটি নির্দিষ্ট ডিরেক্টরিতে এবং xml ফরম্যাটে অন্য একটি ফাইল তৈরি হবে।

JaCoCo Coverage রিপোর্টের আউটপুট (HTML রিপোর্ট):

JaCoCo HTML রিপোর্ট দেখতে নিচের মতো আউটপুট পেতে পারেন:

  • File Structure:

    coverage-reports/
        index.html    --> কভারেজ রিপোর্টের মূল পৃষ্ঠা
        ...
    
  • HTML রিপোর্টের উদাহরণ:
    • Covered lines: কভার করা লাইনগুলি সবুজ রঙে চিহ্নিত হবে।
    • Missed lines: অনুপস্থিত লাইনগুলি লাল রঙে চিহ্নিত হবে।

JaCoCo XML রিপোর্টের আউটপুট উদাহরণ:

<coverage branchRate="0.5" lineRate="0.8">
    <package name="com.example.tests">
        <class name="MyTestClass" lineRate="0.9" branchRate="0.75">
            <method name="testMethod1" desc="()V" line="10" />
            <method name="testMethod2" desc="()V" line="20" />
            <!-- আরও মেথড ও লাইন তথ্য -->
        </class>
    </package>
</coverage>

এখানে:

  • branchRate এবং lineRate কোডের সঠিক কভারেজ শতাংশ প্রদর্শন করে।
  • method এবং class ট্যাগের মাধ্যমে, আপনি প্রতিটি মেথড এবং ক্লাসের কভারেজ দেখতে পারবেন।

৩. Emma ব্যবহার করে Code Coverage রিপোর্ট তৈরি করা

Emma হল আরেকটি টুল যা ANT এর মাধ্যমে কোড কভারেজ রিপোর্ট তৈরি করতে ব্যবহৃত হয়। এটি JaCoCo-এর মতো একইভাবে কাজ করে তবে কনফিগারেশন এবং রিপোর্ট ফরম্যাট কিছুটা আলাদা।

Emma কভারেজ রিপোর্ট উদাহরণ:

<project name="EmmaCoverageExample" default="run-tests-with-coverage">
    <taskdef name="emma" classname="com.vladium.emma.ant.Task" classpath="path_to_emma_libs"/>
    
    <target name="run-tests-with-coverage">
        <emma enabled="true" action="coverage">
            <junit printsummary="true">
                <test name="com.example.tests.MyTestClass"/>
            </junit>
        </emma>

        <emma enabled="true" action="report" destfile="coverage-report">
            <html/>
        </emma>
    </target>
</project>

এখানে:

  • emma টাস্কটি Emma টুলের সাহায্যে কোড কভারেজ রিপোর্ট তৈরি করবে।
  • action="coverage" কোড কভারেজ ডেটা সংগ্রহ করবে।
  • action="report" রিপোর্ট তৈরি করবে, যেখানে html ফরম্যাটে রিপোর্ট তৈরি হবে।

সারমর্ম

Apache ANT ব্যবহার করে আপনি JUnit টেস্ট রিপোর্ট এবং code coverage রিপোর্ট তৈরি করতে পারেন। JUnit টাস্ক ব্যবহার করে সহজেই টেস্ট রিপোর্ট তৈরি করা যায়, যেখানে JaCoCo বা Emma টুলের মাধ্যমে কোড কভারেজ রিপোর্ট তৈরি করা সম্ভব। JaCoCo একটি জনপ্রিয় টুল যা ANT-এর সাথে সহজে ইন্টিগ্রেট করা যায় এবং এটি HTML ও XML ফরম্যাটে কভারেজ রিপোর্ট তৈরি করতে সাহায্য করে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion