Penjelasan terperinci tentang contoh berbasis data menggunakan XML sebagai sumber data di Java dan testng
Fungsi testng sangat kuat. Anda dapat menggunakan @DataProvider untuk digunakan sebagai driver data. File sumber data dapat Excel, XML, YAML, atau bahkan teks TXT. Ambil XML sebagai contoh di sini:
Catatan: @DataProvider's Return Value Type hanya dapat menjadi objek [] [] dan iterator <POMPICTE> []
Testdata.xml:
<? Xml Version = "1.0" encoding = "UTF-8"?> <data> <testmethod1> <intut> 1 </input> <button> 2 </button> </testmethod1> <testmethod1> <naton> 3 </input> <button> 4 </button> </testmethod1> <input> </input> <button> 4 </buttpute> </testmethod1> </testmethod> <butts> 4 </button> </testmethod4> </data>
Gunakan DOM4J untuk Parse XML, Parserxml.java File:
Paket com.test; impor java.io.file; impor java.util.arraylist; import java.util.hashmap; impor java.util.iterator; impor java.util.list; impor java.util.map; impor org.dom.document; impor org.om4j.map; impor org.dom.document; impor org.om4j.map; impor org.dom.document; impor org.dom4j.map; impor org.dom.document; impor org.dom4j.map; org.dom4j.io.saxReader; kelas publik parserxml {daftar publik parser3xml (string filename) {file inputxml = file baru (nama file); Daftar Daftar = ArrayList baru (); Int count = 1; Saxreader Saxreader = Saxreader baru (); coba {dokumen dokumen = saxreader.read (inputxml); Elemen karyawan = document.getrooteLement (); untuk (iterator i = karyawan.elementIterator (); i.hasnext ();) {elemen karyawan = (elemen) i.next (); Peta peta = hashmap baru (); Peta tempmap = hashmap baru (); untuk (iterator j = usaha.elementiterator (); j.hasnext ();) {elemen node = (elemen) j.next (); tempmap.put (node.getName (), node.getText ()); } peta.put (usaha.getName (), tempmap); list.add (peta); }} catch (DocumentException e) {System.out.println (e.getMessage ()); } daftar pengembalian; }}Kemudian daftar parsed dikonversi menjadi objek [] [] data dan digabungkan dalam @DataProvider.
File testdata.java:
Paket com.test; impor java.io.file; impor java.lang.reflect.method; import java.util.arraylist; impor java.util.hashmap; impor java.utilor; {daftar pribadi l; public testData () {this.getXmldata (); } public void getXmlData () {parserxml p = new parserxml (); l = p.parser3xml (file baru ("src/com/test/testdata.xml"). getAbsolutePath ()); } @DataProvider objek publik [] [] providerMethod (metode metode) {daftar <peta <string, string >> result = new arraylist <peta <string, string >> (); untuk (int i = 0; i <l.size (); i ++) {peta m = (peta) l.get (i); if (m.containskey (method.getName ())) {peta <string, string> dm = (peta <string, string>) m.get (method.getName ()); result.add (dm); }} Objek [] [] file = objek baru [result.size ()] []; untuk (int i = 0; i <result.size (); i ++) {file [i] = objek baru [] {result.get (i)}; } mengembalikan file; }}Kemudian uji file uji:
File testDataProvider.java:
Paket com.test; import java.util.map; impor org.testng.annotations.*; kelas publik testDataProvider memperluas testData {@test (dataprovider = "providerMethod") public void testMethod1 (peta: ",?> Param) {System.out.printl (peta" ("peta:" peta (?,? } @Test (dataprovider = "providerMethod") public void testMethod2 (peta <?,?> Param) {System.out.println ("Method2 diterima:"+param.get ("input")); } @Test (dataprovider = "providerMethod") public void testMethod3 (peta <?,?> Param) {System.out.println ("Method3 diterima:"+param.get ("input")); } @Test public void testMethod4 () {System.out.println ("Method4 Diterima: 4"); }}Mari kita kembali dan menganalisis file XML. Ada dua node testmethod1, testmethod2, testmethod3, dan testmethod4 node. Dalam file testDataProvider.java, empat fungsi tes didefinisikan: testmethod1, testmethod2, testmethod3, dan testmethod4. TestMethOD4 tidak menggunakan DataProvider, sehingga hasil akhirnya harus bahwa TestMethod1 berjalan dua kali, TestMethod2, TestMethod3, dan TestMethod4 berjalan sekali, dan hasilnya adalah sebagai berikut:
Method1 Diterima: 1Method1 Diterima: 3Method2 Diterima: 3Method3 Diterima: 3Method4 Diterima: 4Passed: testMethod1 ({input = 1, tombol = 2}) lulus: testMethod1 ({input = 3, tombol = 4}) lulus: testMethod2 ({input = 3, button = 4}) lulus: TestMethod2 ({input = 3, Button = 4, 4}) lulus: TestMethod2 ({input = 3, Button = 4, 4, 4, tombol = 4}) lulus: testMethod4 ====================================================================================================== ===================================================================================================================================================== Dengan kata lain, dengan cara ini, Anda hanya perlu menulis fungsi tes terlebih dahulu dan kemudian menentukan data dalam file XML, dan Anda dapat mengontrol apakah fungsi berjalan, jumlah berjalan dan data yang berjalan.
Oke, mari kita coba ...
Terima kasih telah membaca, saya harap ini dapat membantu Anda. Terima kasih atas dukungan Anda untuk situs ini!