Apache ANT একটি শক্তিশালী বিল্ড টুল যা শুধুমাত্র কোড কম্পাইল এবং প্যাকেজিংয়ের জন্য ব্যবহৃত হয় না, বরং এটি unit testing এবং build automation-এর জন্যও ব্যাপকভাবে ব্যবহৃত হয়। ANT এর সাহায্যে আপনি আপনার প্রজেক্টের বিল্ড প্রক্রিয়ার মধ্যে unit testing অন্তর্ভুক্ত করতে পারেন এবং এটি স্বয়ংক্রিয়ভাবে করতে পারেন।
এই গাইডে আমরা আলোচনা করব কিভাবে ANT ব্যবহার করে unit testing পরিচালনা এবং build automation সেটআপ করা যায়।
Apache ANT দিয়ে unit test পরিচালনা করতে সাধারণত JUnit ব্যবহৃত হয়। JUnit হল একটি জনপ্রিয় unit testing ফ্রেমওয়ার্ক যা Java প্রোগ্রামিং ভাষায় লেখা কোডের জন্য ব্যবহৃত হয়। ANT-এ JUnit টাস্ক ব্যবহার করে আপনি unit tests রান করতে পারেন এবং ফলাফল দেখাতে পারেন।
JUnit টাস্কটি ANT এর বিল্ড ফাইলে অন্তর্ভুক্ত করতে হয়, এবং এরপর আপনি JUnit টেস্ট ক্লাসগুলি রান করতে পারেন। এর জন্য JUnit jar ফাইল আপনার classpath-এ অন্তর্ভুক্ত থাকতে হবে।
JUnit টাস্ক কাজ করার জন্য JUnit এবং Ant-এর ant-junit
লাইব্রেরি প্রয়োজন। JUnit এর jar ফাইল সাধারণত আপনার প্রজেক্টের lib
ডিরেক্টরিতে থাকতে হবে অথবা classpath-এ অন্তর্ভুক্ত করা হতে পারে।
এখানে একটি উদাহরণ দেখানো হলো যেখানে 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>
junit.classpath
-এ junit-4.13.2.jar
যোগ করা হয়েছে।compile
টার্গেট Java ক্লাস কম্পাইল করে build/classes
ডিরেক্টরিতে রাখে।test
টার্গেট compile
টার্গেটের ওপর নির্ভরশীল, তাই প্রথমে কোড কম্পাইল হবে এবং পরে JUnit টেস্ট চালানো হবে।<junit>
ট্যাগটি JUnit টেস্ট চালাতে ব্যবহৃত হয় এবং haltonfailure="yes"
দিয়ে যদি কোনো টেস্ট ফেইল হয়, তবে বিল্ডও ফেইল করবে।printsummary="yes"
দিয়ে টেস্টের সারাংশ কমান্ড লাইনে প্রিন্ট করা হবে।<test name="com.example.TestExample"/>
ট্যাগে টেস্ট ক্লাসের পূর্ণ নাম উল্লেখ করা হয়েছে, যার মধ্যে আপনার unit tests থাকবে।এই বিল্ড ফাইলে ব্যবহার করার জন্য একটি সাধারণ 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
}
}
এখানে দুটি মৌলিক টেস্ট করা হয়েছে:
ANT এর সাহায্যে build 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>
build/classes
ডিরেক্টরিতে রাখা হয়।compile
টার্গেটের পর টেস্ট রান করা হয়।junit
টাস্ক এবং taskdef
ব্যবহার করা হয়।এইভাবে, ANT দিয়ে আপনি একটি পূর্ণাঙ্গ build automation পদ্ধতি তৈরি করতে পারেন, যা আপনার কোডের একাধিক ধাপ সম্পন্ন করতে সক্ষম।