TestNG হল একটি জনপ্রিয় Java testing framework, যা ইউনিট টেস্টিং এবং অন্যান্য ধরনের টেস্টিং করার জন্য ব্যবহৃত হয়। Apache Xerces এবং TestNG এর মাধ্যমে আপনি XML ডেটার validation এবং schema checking খুব সহজেই করতে পারেন।
এখানে TestNG এর মাধ্যমে XML Validation এবং Schema Checking করার একটি সম্পূর্ণ উদাহরণ দেয়া হবে, যাতে আপনি বুঝতে পারবেন কিভাবে XML ডেটাকে XSD (XML Schema Definition) এর সাথে যাচাই করা যায় এবং TestNG ব্যবহার করে এই যাচাই প্রক্রিয়াটি টেস্ট করা যায়।
Step 1: Maven Dependency Setup
প্রথমেই Maven এর মাধ্যমে প্রয়োজনীয় ডিপেন্ডেন্সি ইনস্টল করতে হবে। আপনার pom.xml ফাইলে Apache Xerces এবং TestNG ডিপেন্ডেন্সি যোগ করুন।
<dependencies>
<!-- Apache Xerces for XML Parsing -->
<dependency>
<groupId>org.apache.xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.12.1</version>
</dependency>
<!-- Apache Xerces for XML Schema Validation -->
<dependency>
<groupId>org.apache.xerces</groupId>
<artifactId>xml-apis</artifactId>
<version>1.4.01</version>
</dependency>
<!-- TestNG for unit testing -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.4.0</version>
<scope>test</scope>
</dependency>
</dependencies>
Step 2: Sample XML and XSD Files
XML file (person.xml):
<person xmlns="http://www.example.com/person">
<name>John Doe</name>
<age>30</age>
</person>
XSD file (person.xsd):
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.example.com/person"
targetNamespace="http://www.example.com/person"
elementFormDefault="qualified">
<xs:element name="person">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="age" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
এখানে, person.xml ফাইলটি একটি সাধারণ person এলিমেন্ট ধারণ করে যার মধ্যে name এবং age ফিল্ড রয়েছে, এবং person.xsd ফাইলটি সেই XML ডেটার জন্য একটি স্কিমা ডেফিনেশন।
Step 3: Create XML Validation and Schema Checking Using TestNG
TestNG ব্যবহার করে আমরা XML ডেটাকে XSD ফাইলের সাথে যাচাই করতে পারি। এখানে একটি TestNG টেস্ট কেস রয়েছে যা Apache Xerces ব্যবহার করে XML ফাইল এবং স্কিমা যাচাই করবে।
import org.apache.xerces.parsers.SAXParser;
import org.apache.xerces.xni.parser.XMLParserConfiguration;
import org.apache.xml.security.Init;
import org.xml.sax.InputSource;
import org.testng.Assert;
import org.testng.annotations.Test;
public class XMLValidationTest {
@Test
public void testXMLValidation() {
try {
// Initialize the XML Security library
Init.init();
// Specify the XML and XSD files
String xmlFile = "person.xml";
String xsdFile = "person.xsd";
// Create a SAXParser to parse the XML file
SAXParser parser = new SAXParser();
// Set up the XML schema validation
parser.setFeature("http://apache.org/xml/features/validation/schema", true);
// Parse the XML file using the schema
parser.parse(new InputSource(new java.io.FileInputStream(xmlFile)));
// If the XML file is valid against the schema, pass the test
Assert.assertTrue(true, "XML is valid against the schema.");
} catch (Exception e) {
// If any exception occurs during parsing or validation, fail the test
Assert.fail("XML validation failed: " + e.getMessage());
}
}
}
Step 4: Explanation of the Code
- SAXParser: এখানে SAXParser ব্যবহার করা হয়েছে, যা XML ডেটা পার্স এবং স্কিমা যাচাইয়ের জন্য ব্যবহৃত হয়েছে। এটি Apache Xerces এর একটি পার্সার, যা স্কিমা ফিচার সক্ষম (enabled) করার মাধ্যমে XML ডেটার স্কিমা যাচাই করে।
- TestNG Assertions: Assert.assertTrue() ব্যবহৃত হয়েছে XML ডেটার বৈধতা যাচাই করতে। যদি XML ডেটা সঠিকভাবে স্কিমার সাথে মিলে, তবে এটি টেস্টটি সফল হিসেবে গণ্য হবে। অন্যথায়, Assert.fail() ব্যবহার করে টেস্টটি ব্যর্থ করা হবে।
- XML Schema Validation: SAXParser এর মাধ্যমে XML ফাইলটি স্কিমা ফাইলের সাথে যাচাই করা হয়, এবং যদি XML ফাইলটি স্কিমার সাথে মেলে, তবে টেস্টটি সফল হবে।
Step 5: Running the Test
TestNG টেস্ট চালানোর জন্য নিচের পদক্ষেপ অনুসরণ করতে পারেন:
- Run the TestNG Test: আপনি TestNG টেস্ট কেস রান করলে এটি XML ফাইল এবং স্কিমা ফাইলের মধ্যে তুলনা করবে এবং যাচাই করবে।
- Test Result:
- যদি XML ফাইলটি person.xsd স্কিমার সাথে সঠিকভাবে মেলে, তাহলে টেস্টটি সফল হবে।
- যদি XML ফাইলটি স্কিমার সাথে সঠিক না মেলে (যেমন কোনো ফিল্ডের অভাব, অথবা ডেটার টাইপ ভুল হলে), টেস্টটি ব্যর্থ হবে এবং ত্রুটি বার্তা প্রিন্ট হবে।
Step 6: Output
যদি XML ডেটা সঠিকভাবে স্কিমার সাথে মেলে, তাহলে টেস্ট আউটপুট হবে:
PASSED: testXMLValidation
যদি কোনো ত্রুটি থাকে (যেমন স্কিমা এবং XML এর মধ্যে অসামঞ্জস্য), তাহলে এটি এমন আউটপুট দেবে:
FAILED: testXMLValidation
XML validation failed: cvc-complex-type.2.4.a: Invalid content was found starting with element 'age'.
Conclusion
Apache Xerces এবং TestNG এর মাধ্যমে XML ডেটার validation এবং schema checking করা সহজ এবং কার্যকর। TestNG ব্যবহার করে আপনি XML ডেটা এবং স্কিমার মধ্যে বৈধতা যাচাই করতে পারেন এবং এটি একটি মজবুত টেস্টিং পরিবেশ তৈরি করে যা নিশ্চিত করে যে আপনার XML ডেটা সঠিক এবং নির্ভরযোগ্য। Apache Xerces এর মাধ্যমে XML ডেটাকে পার্স এবং স্কিমা যাচাই করতে সাহায্য পাওয়া যায়, এবং TestNG এর মাধ্যমে আপনি সেই যাচাইয়ের ফলাফল টেস্ট হিসেবে দেখতে পারেন।