TestNG এবং Apache Xerces একত্রে ব্যবহার করে আপনি XML ডেটা পার্সিং এবং XML ডকুমেন্ট ভ্যালিডেশন এর জন্য স্বয়ংক্রিয় টেস্ট কেস তৈরি করতে পারেন। TestNG একটি শক্তিশালী টেস্টিং ফ্রেমওয়ার্ক যা জাভা প্রোগ্রামিং ভাষায় ইউনিট টেস্টিং করতে ব্যবহৃত হয়। Apache Xerces XML পার্সিং এবং ভ্যালিডেশন করার জন্য ব্যবহৃত হয়, যেমন XML ডকুমেন্ট পার্স করা, XPath কুইরি করা এবং XML স্কিমা ভ্যালিডেশন করা।
এই লেখায়, আমরা TestNG এবং Apache Xerces এর ইন্টিগ্রেশন নিয়ে একটি উদাহরণ দেখব, যেখানে TestNG টেস্ট কেসের মাধ্যমে XML ডেটার কার্যকারিতা যাচাই করা হবে।
আমরা এখানে একটি উদাহরণ তৈরি করব, যেখানে TestNG ব্যবহার করে XML ডকুমেন্ট পার্স করা হবে এবং তার মধ্যে থাকা তথ্যের সঠিকতা যাচাই করা হবে। এছাড়াও, Apache Xerces ব্যবহার করে XML স্কিমা ভ্যালিডেশন করা হবে।
Step 1: Maven Dependency for TestNG and Xerces
প্রথমে, আপনার Maven প্রজেক্টে TestNG এবং Xerces লাইব্রেরি যুক্ত করতে হবে।
Maven Dependency for TestNG and Xerces:
<dependencies>
<!-- TestNG Dependency -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.4.0</version> <!-- Latest version -->
<scope>test</scope>
</dependency>
<!-- Apache Xerces Dependency -->
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.12.1</version> <!-- Latest version -->
</dependency>
<!-- JAXP API for XML Parsing -->
<dependency>
<groupId>javax.xml</groupId>
<artifactId>jaxp-api</artifactId>
<version>1.4.5</version>
</dependency>
</dependencies>
Step 2: XML ডকুমেন্ট (example.xml)
আমরা একটি XML ডকুমেন্ট তৈরি করব, যা পার্স এবং যাচাই করা হবে।
<library>
<book>
<title>Learn XML</title>
<author>John Smith</author>
<price>29.99</price>
</book>
<book>
<title>Advanced XML</title>
<author>Jane Doe</author>
<price>39.99</price>
</book>
</library>
Step 3: TestNG টেস্ট কেস তৈরি করা
এখন, আমরা TestNG ব্যবহার করে XML পার্স এবং ভ্যালিডেশন পরীক্ষার জন্য একটি টেস্ট কেস তৈরি করব।
- XML Parsing Test: XML ডেটার পার্সিং যাচাই করা হবে।
- XPath Query Test: XPath এক্সপ্রেশন দিয়ে XML ডেটা খুঁজে বের করা হবে।
XML Parsing Test:
import org.apache.xerces.parsers.DOMParser;
import org.testng.annotations.Test;
import org.w3c.dom.*;
import java.io.File;
import static org.testng.Assert.assertEquals;
public class XMLParsingTest {
@Test
public void testParseXML() {
try {
// Create a DOMParser instance
DOMParser parser = new DOMParser();
// Parse the XML file
File xmlFile = new File("example.xml");
parser.parse(xmlFile.toURI().toString());
// Get the document
Document document = parser.getDocument();
document.getDocumentElement().normalize();
// Extract the book title
NodeList nodeList = document.getElementsByTagName("book");
String bookTitle = nodeList.item(0).getFirstChild().getTextContent();
// Verify if the book title is correct
assertEquals(bookTitle, "Learn XML");
} catch (Exception e) {
e.printStackTrace();
}
}
}
XPath Query Test:
import org.apache.xerces.jaxp.DocumentBuilderFactoryImpl;
import org.apache.xpath.XPathAPI;
import org.testng.annotations.Test;
import org.w3c.dom.*;
import javax.xml.xpath.XPathExpressionException;
import static org.testng.Assert.assertEquals;
public class XPathTest {
@Test
public void testXPathQuery() throws Exception {
// Create a document builder
DocumentBuilderFactoryImpl factory = new DocumentBuilderFactoryImpl();
factory.setNamespaceAware(true);
Document document = factory.newDocumentBuilder().parse("example.xml");
// XPath to extract book price
String xpathExpression = "//book[title='Learn XML']/price";
String price = XPathAPI.eval(document, xpathExpression).toString();
// Verify the extracted price
assertEquals(price, "29.99");
}
}
Step 4: XML স্কিমা ভ্যালিডেশন Test
XML স্কিমা ভ্যালিডেশন একটি গুরুত্বপূর্ণ পরীক্ষা যা XML ডেটার গঠন এবং তথ্য সঠিকতা নিশ্চিত করে। আমরা Apache Xerces ব্যবহার করে XML Schema (XSD) এর সাথে XML ফাইলের ভ্যালিডেশন করব।
XML Schema (example.xsd):
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="library">
<xs:complexType>
<xs:sequence>
<xs:element name="book" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="author" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XML Validation Test:
import org.apache.xerces.jaxp.validation.XMLSchemaFactory;
import org.apache.xerces.parsers.DOMParser;
import org.testng.annotations.Test;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.XMLConstants;
import java.io.File;
import static org.testng.Assert.assertTrue;
public class XMLSchemaValidationTest {
@Test
public void testXMLSchemaValidation() {
try {
// Create a SchemaFactory and Schema
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
File schemaFile = new File("example.xsd");
Schema schema = factory.newSchema(schemaFile);
// Create a DOMParser and validate XML against the schema
DOMParser parser = new DOMParser();
parser.setFeature("http://apache.org/xml/features/validation/schema", true);
parser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation", schemaFile.toURI().toString());
File xmlFile = new File("example.xml");
parser.parse(xmlFile.toURI().toString());
// If no exception is thrown, validation is successful
assertTrue(true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Step 5: TestNG রান এবং ফলাফল
এখন, আপনি TestNG রান করে আপনার টেস্ট কেসগুলো চালাতে পারেন এবং Apache Xerces এর মাধ্যমে XML পার্সিং, XPath কুইরি, এবং XML স্কিমা ভ্যালিডেশন সঠিকভাবে কাজ করছে কিনা যাচাই করতে পারবেন।
সারাংশ
TestNG এবং Apache Xerces একত্রে ব্যবহার করে XML ডেটা পার্সিং, XPath কুইরি, এবং XML স্কিমা ভ্যালিডেশন-এর জন্য একটি শক্তিশালী টেস্টিং প্ল্যাটফর্ম তৈরি করা সম্ভব। TestNG এর মাধ্যমে আপনি XML ডেটার সঠিকতা এবং কার্যকারিতা পরীক্ষা করতে পারেন, এবং Xerces ব্যবহার করে XML ডেটা পার্সিং এবং ভ্যালিডেশন খুব সহজভাবে পরিচালনা করা সম্ভব।
Apache Xerces একটি শক্তিশালী XML প্যার্সিং লাইব্রেরি, যা XML ডেটার ভ্যালিডেশন, প্যার্সিং, এবং ট্রান্সফরমেশন সহজ করে তোলে। XML ডেটার সঠিকতা যাচাই বা প্রক্রিয়া করার সময় আপনি টেস্টিং প্রক্রিয়া চালানোর জন্য TestNG ব্যবহার করতে পারেন। TestNG একটি পপুলার টেস্টিং ফ্রেমওয়ার্ক যা জাভা কোডে ইউনিট টেস্ট, ইন্টিগ্রেশন টেস্ট, এবং ফাংশনাল টেস্ট পরিচালনা করতে ব্যবহৃত হয়।
এই টিউটোরিয়ালে, আমরা দেখব কিভাবে Apache Xerces এবং TestNG ব্যবহার করে XML ডেটার ভ্যালিডেশন এবং প্রোসেসিং টেস্ট করা যায়।
১. TestNG কী?
TestNG হল একটি ফ্রেমওয়ার্ক যা JUnit থেকে অনুপ্রাণিত হয়ে তৈরি, তবে এতে আরও উন্নত বৈশিষ্ট্য রয়েছে। TestNG সরাসরি JUnit বা JUnit-like টেস্ট রানের জন্য ব্যবহৃত হয় এবং এটি XML ফাইল, গ্রুপিং, প্যারালাল টেস্টিং, এবং কাস্টম রিপোর্টিং সমর্থন করে। এটি জাভা অ্যাপ্লিকেশনের জন্য সহজ, শক্তিশালী এবং নমনীয় টেস্টিং ফ্রেমওয়ার্ক।
২. TestNG টেস্টিংয়ের মাধ্যমে XML ডেটা ভ্যালিডেশন
ধরা যাক, আমাদের একটি XML ডকুমেন্ট রয়েছে এবং আমরা Xerces ব্যবহার করে সেই XML ডেটা টেস্ট করতে চাই।
XML Example (person.xml):
<?xml version="1.0" encoding="UTF-8"?>
<person>
<name>John Doe</name>
<age>30</age>
<city>New York</city>
</person>
আমরা এই XML ডকুমেন্টের name, age, এবং city এর মান যাচাই করতে চাই।
TestNG এর সাথে XML ডেটা টেস্ট করার উদাহরণ:
Java কোড (TestNG টেস্ট):
import org.apache.xerces.parsers.DOMParser;
import org.apache.xerces.xni.parser.XMLParserConfiguration;
import org.w3c.dom.*;
import org.testng.Assert;
import org.testng.annotations.Test;
public class XMLTestNGExample {
@Test
public void testXMLData() {
try {
// Create a DOMParser to parse the XML
DOMParser parser = new DOMParser();
parser.parse("person.xml");
// Get the document
Document document = parser.getDocument();
// Get the root element <person>
Element personElement = document.getDocumentElement();
// Get the <name> element and verify its value
String name = personElement.getElementsByTagName("name").item(0).getTextContent();
Assert.assertEquals(name, "John Doe", "Name does not match!");
// Get the <age> element and verify its value
String age = personElement.getElementsByTagName("age").item(0).getTextContent();
Assert.assertEquals(age, "30", "Age does not match!");
// Get the <city> element and verify its value
String city = personElement.getElementsByTagName("city").item(0).getTextContent();
Assert.assertEquals(city, "New York", "City does not match!");
} catch (Exception e) {
e.printStackTrace();
Assert.fail("Exception occurred during XML parsing: " + e.getMessage());
}
}
}
কোড ব্যাখ্যা:
- DOMParser:
DOMParserব্যবহার করে XML ডকুমেন্ট প্যার্স করা হয়েছে। - getElementsByTagName(): এটি XML ডকুমেন্টের মধ্যে নির্দিষ্ট ট্যাগের মান বের করতে ব্যবহৃত হয়েছে (যেমন
name,age, এবংcity)। - Assert.assertEquals(): TestNG এর মাধ্যমে যাচাই করা হয়েছে যে XML ডকুমেন্টের মান প্রত্যাশিত মানের সাথে মেলে কি না।
TestNG রান আউটপুট:
যদি XML ডেটার মান সঠিক থাকে, তাহলে TestNG টেস্ট সফল হবে। যদি মানটি ভুল থাকে, তবে একটি AssertionError ঘটবে এবং TestNG টেস্ট ফেইল হবে।
PASSED: testXMLData
৩. TestNG ব্যবহার করে XML ডেটার অন্যান্য টেস্টিং
TestNG এর মাধ্যমে XML ডেটার অন্যান্য ধরনের টেস্টিংও করা যায়। উদাহরণস্বরূপ:
- XML ফাইলের বৈধতা চেক করা: XML স্কিমা বা DTD (Document Type Definition) ভ্যালিডেশন টেস্ট করা যায়।
- Multiple XML ফাইল ভ্যালিডেশন: একাধিক XML ফাইলের মান যাচাই করা।
- Empty or Missing Tags Testing: যদি XML ফাইলের কোনো ট্যাগ অনুপস্থিত থাকে বা খালি থাকে, সেক্ষেত্রে উপযুক্ত এক্সসেপশন হ্যান্ডলিং এবং টেস্টিং করা।
ধরা যাক, একটি টেস্ট যা XML ফাইলের age ফিল্ডটি চেক করবে:
@Test
public void testAgeField() {
try {
DOMParser parser = new DOMParser();
parser.parse("person.xml");
Document document = parser.getDocument();
String age = document.getElementsByTagName("age").item(0).getTextContent();
// Test if the age field exists and is numeric
Assert.assertNotNull(age, "Age field is missing");
Assert.assertTrue(age.matches("\\d+"), "Age is not a valid number");
} catch (Exception e) {
e.printStackTrace();
Assert.fail("Exception occurred during XML validation: " + e.getMessage());
}
}
এখানে আমরা যাচাই করছি যে age ফিল্ডের মান উপস্থিত এবং একটি বৈধ সংখ্যা (numeric)।
৪. TestNG টেস্টের কার্যকরী বৈশিষ্ট্যসমূহ
TestNG এ XML ডেটা টেস্ট করার সময় কিছু বিশেষ বৈশিষ্ট্য ব্যবহার করা যেতে পারে, যেমন:
- Group Testing: একাধিক XML ডেটা টেস্ট গ্রুপ হিসেবে পরিচালনা করা।
- Parallel Test Execution: একাধিক XML ডকুমেন্টের টেস্ট একসাথে প্যারালালভাবে চালানো।
- Test Data Providers: বিভিন্ন XML ডকুমেন্ট বা XML টেস্ট ডেটা প্রদান করে টেস্ট চালানো।
@DataProvider(name = "xmlFiles")
public Object[][] provideXMLFiles() {
return new Object[][] {{"person1.xml"}, {"person2.xml"}};
}
@Test(dataProvider = "xmlFiles")
public void testXMLWithMultipleFiles(String xmlFile) {
// Perform the same test on different XML files
// Similar logic as the previous test
}
সারাংশ
Apache Xerces এবং TestNG এর সাহায্যে XML ডেটার সঠিকতা পরীক্ষা এবং যাচাই করা যায়। DOMParser বা SAXParser ব্যবহার করে XML ডেটা প্যার্স করা যায় এবং TestNG এর মাধ্যমে তা টেস্ট করা যায়। TestNG এর সাহায্যে আমরা XML ডেটার উপাদান, মান এবং সঠিকতা যাচাই করতে পারি, এবং XML স্কিমা বা DTD ভ্যালিডেশনসহ অন্যান্য টেস্টও চালাতে পারি।
এটি XML Data Validation এবং Unit Testing এর ক্ষেত্রে একটি শক্তিশালী সমাধান প্রদান করে, বিশেষ করে যখন XML ডেটার সঠিকতা, গঠন, এবং মান নিশ্চিত করতে হবে।
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 এর মাধ্যমে আপনি সেই যাচাইয়ের ফলাফল টেস্ট হিসেবে দেখতে পারেন।
TestNG এবং Apache Xerces একত্রে ব্যবহার করা যেতে পারে XML ডেটা পার্সিং এবং ভ্যালিডেশন এর জন্য স্বয়ংক্রিয় টেস্টিং করতে। TestNG একটি শক্তিশালী টেস্ট ফ্রেমওয়ার্ক যা Java অ্যাপ্লিকেশনগুলির জন্য টেস্ট কেস তৈরি এবং পরিচালনা করতে সহায়তা করে, এবং Apache Xerces একটি লাইব্রেরি যা XML ডেটা পার্সিং, ভ্যালিডেশন, এবং ম্যানিপুলেশন করতে ব্যবহৃত হয়।
TestNG এবং Xerces এর ইন্টিগ্রেশন আপনাকে XML ডেটা পার্সিং এবং স্কিমা ভ্যালিডেশন প্রক্রিয়ার উপর টেস্ট কেস তৈরি করতে সাহায্য করে, যাতে আপনি সহজে XML ডকুমেন্টের সঠিকতা এবং বৈধতা পরীক্ষা করতে পারেন।
এখানে TestNG এবং Apache Xerces একত্রে ব্যবহারের একটি উদাহরণ দেওয়া হয়েছে।
TestNG এবং Xerces Integration উদাহরণ
এই উদাহরণে, আমরা একটি XML ডকুমেন্ট পার্স করব এবং তা XSD (XML Schema Definition) এর মাধ্যমে ভ্যালিডেশন করব। TestNG ব্যবহার করে আমরা টেস্ট কেস তৈরি করব যা XML ডকুমেন্টের বৈধতা নিশ্চিত করবে।
১. XML ডকুমেন্ট উদাহরণ (example.xml)
<catalog>
<book>
<title>XML for Beginners</title>
<author>John Doe</author>
<price>29.99</price>
</book>
<book>
<title>Advanced XML</title>
<author>Jane Smith</author>
<price>39.99</price>
</book>
</catalog>
২. XSD (XML Schema Definition) উদাহরণ (example.xsd)
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="catalog">
<xs:complexType>
<xs:sequence>
<xs:element name="book" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="author" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
৩. TestNG টেস্ট কেস এবং Xerces Integration
import org.apache.xerces.parsers.DOMParser;
import org.apache.xerces.xni.parser.XMLParseException;
import org.xml.sax.SAXException;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.io.File;
public class XMLValidationTest {
@Test
public void testXMLValidation() {
try {
// Initialize the Xerces DOMParser
DOMParser parser = new DOMParser();
// Enable XML Schema validation (XSD)
parser.setFeature("http://apache.org/xml/features/validation/schema", true);
// XML file to validate
File xmlFile = new File("example.xml");
// Parse the XML file and validate it against the XSD schema
parser.parse(xmlFile.toURI().toString());
// Assert that the XML is valid according to the XSD schema
Assert.assertTrue(true, "XML is valid according to the Schema.");
} catch (SAXException | XMLParseException e) {
// If an exception is thrown, it means the XML is invalid
Assert.fail("XML Validation failed: " + e.getMessage());
} catch (Exception e) {
// Catch any other unexpected exceptions
e.printStackTrace();
}
}
}
ব্যাখ্যা:
- DOMParser: Apache Xerces এর DOMParser ক্লাস ব্যবহার করে XML ডকুমেন্ট পার্স করা হচ্ছে।
- XML Schema Validation: setFeature("http://apache.org/xml/features/validation/schema", true) দিয়ে XML স্কিমা (XSD) ভ্যালিডেশন সক্রিয় করা হয়েছে।
- TestNG Test Case: TestNG টেস্ট কেস তৈরি করা হয়েছে যা XML ডকুমেন্টের XSD এর সাথে ভ্যালিডেশন পরীক্ষা করবে। যদি XML ডকুমেন্ট স্কিমার সাথে সঠিক না হয়, তবে SAXException বা XMLParseException থ্রো হবে, এবং টেস্টটি ফেইল হবে।
- Assert: Assert.assertTrue(true) ব্যবহার করা হয়েছে টেস্টের সফলতা নিশ্চিত করার জন্য। যদি কোনো ত্রুটি থাকে, তবে Assert.fail() দিয়ে ব্যর্থতা দেখানো হবে।
৪. TestNG রান:
এই টেস্ট কেসটি চালানোর জন্য আপনাকে TestNG ফ্রেমওয়ার্ক ব্যবহার করতে হবে। Maven বা Gradle দিয়ে প্রয়োজনীয় ডিপেনডেন্সি যোগ করতে হবে। আপনি pom.xml ফাইলে নিম্নলিখিত ডিপেনডেন্সি যোগ করতে পারেন।
Maven Dependency for Apache Xerces:
<dependency>
<groupId>org.apache.xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.12.0</version>
</dependency>
Maven Dependency for TestNG:
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>7.4.0</version>
<scope>test</scope>
</dependency>
এখন, আপনি TestNG টেস্ট কেস চালিয়ে XML ডকুমেন্টের বৈধতা নিশ্চিত করতে পারবেন।
সারাংশ
TestNG এবং Apache Xerces এর ইন্টিগ্রেশন XML ডকুমেন্টের পার্সিং এবং ভ্যালিডেশন প্রক্রিয়ায় একটি শক্তিশালী টেস্টিং সিস্টেম তৈরি করতে সহায়তা করে। এই ইন্টিগ্রেশন দ্বারা আপনি XML ডেটার বৈধতা নিশ্চিত করতে পারেন এবং XSD এর মাধ্যমে ডেটার গঠন সঠিক কিনা তা যাচাই করতে পারেন। TestNG ফ্রেমওয়ার্ক ব্যবহারের মাধ্যমে সহজে স্বয়ংক্রিয় টেস্ট কেস তৈরি করা যায় যা XML ডকুমেন্টের সঠিকতা নিশ্চিত করে।
Read more