JUnit - Ekstensi
Berikut adalah ekstensi JUnit -
- Cactus
- JWebUnit
- XMLUnit
- MockObject
Kaktus
Cactus adalah kerangka kerja pengujian sederhana untuk pengujian unit kode java sisi server (Servlets, EJBs, Tag Libs, Filters). Tujuan Cactus adalah untuk menurunkan biaya penulisan tes untuk kode sisi server. Ini menggunakan JUnit dan memperluasnya. Cactus mengimplementasikan strategi dalam wadah yang menjalankan pengujian di dalam wadah.
Ekosistem kaktus terdiri dari beberapa komponen -
Cactus Frameworkadalah jantung dari Cactus. Ini adalah mesin yang menyediakan API untuk menulis pengujian Cactus.
Cactus Integration Modules adalah front-end dan framework yang menyediakan cara mudah untuk menggunakan Cactus Framework (skrip Ant, plugin Eclipse, dan plugin Maven).
Kode berikut menunjukkan bagaimana Cactus dapat digunakan.
import org.apache.cactus.*;
import junit.framework.*;
public class TestSampleServlet extends ServletTestCase {
@Test
public void testServlet() {
// Initialize class to test
SampleServlet servlet = new SampleServlet();
// Set a variable in session as the doSomething()
// method that we are testing
session.setAttribute("name", "value");
// Call the method to test, passing an
// HttpServletRequest object (for example)
String result = servlet.doSomething(request);
// Perform verification that test was successful
assertEquals("something", result);
assertEquals("otherValue", session.getAttribute("otherName"));
}
}
JWebUnit
JWebUnit adalah kerangka pengujian berbasis Java untuk aplikasi web. Ini membungkus kerangka pengujian yang ada seperti HtmlUnit dan Selenium dengan antarmuka pengujian yang terpadu dan sederhana untuk menguji kebenaran aplikasi web Anda.
JWebUnit menyediakan Java API tingkat tinggi untuk menavigasi aplikasi web yang digabungkan dengan serangkaian pernyataan untuk memverifikasi kebenaran aplikasi. Ini termasuk navigasi melalui tautan, entri dan pengiriman formulir, validasi isi tabel, dan fitur aplikasi web bisnis khas lainnya.
Metode navigasi sederhana dan pernyataan siap pakai memungkinkan pembuatan pengujian yang lebih cepat daripada hanya menggunakan JUnit atau HtmlUnit. Dan jika Anda ingin beralih dari HtmlUnit ke plugin lain seperti Selenium (segera tersedia), Anda tidak perlu menulis ulang pengujian Anda.
Berikut ini contoh kode.
import junit.framework.TestCase;
import net.sourceforge.jwebunit.WebTester;
public class ExampleWebTestCase extends TestCase {
private WebTester tester;
public ExampleWebTestCase(String name) {
super(name);
tester = new WebTester();
}
//set base url
public void setUp() throws Exception {
getTestContext().setBaseUrl("http://myserver:8080/myapp");
}
// test base info
@Test
public void testInfoPage() {
beginAt("/info.html");
}
}
XMLUnit
XMLUnit menyediakan satu kelas ekstensi JUnit, XMLTestCase, dan satu set kelas pendukung yang memungkinkan pernyataan dibuat tentang -
Perbedaan antara dua bagian XML (melalui kelas Diff dan DetailedDiff).
Validitas sepotong XML (melalui kelas Validator).
Hasil dari mengubah sepotong XML menggunakan XSLT (melalui kelas Transform).
Evaluasi ekspresi XPath pada potongan XML (melalui kelas yang mengimplementasikan antarmuka XpathEngine).
Node individu dalam potongan XML yang diekspos oleh DOM Traversal (melalui kelas NodeTest).
Mari kita asumsikan kita memiliki dua buah XML yang ingin kita bandingkan dan tegaskan bahwa keduanya sama. Kita bisa menulis kelas tes sederhana seperti ini -
import org.custommonkey.xmlunit.XMLTestCase;
public class MyXMLTestCase extends XMLTestCase {
// this test method compare two pieces of the XML
@Test
public void testForXMLEquality() throws Exception {
String myControlXML = "<msg><uuid>0x00435A8C</uuid></msg>";
String myTestXML = "<msg><localId>2376</localId></msg>";
assertXMLEqual("Comparing test xml to control xml", myControlXML, myTestXML);
}
}
MockObject
Dalam pengujian unit, objek tiruan dapat mensimulasikan perilaku objek yang kompleks, nyata (bukan tiruan) dan oleh karena itu berguna saat objek nyata tidak praktis atau tidak mungkin untuk digabungkan ke dalam pengujian unit.
Gaya pengkodean umum untuk pengujian dengan objek tiruan adalah -
- Buat contoh objek tiruan.
- Tetapkan keadaan dan harapan dalam objek tiruan.
- Panggil kode domain dengan objek tiruan sebagai parameter.
- Verifikasi konsistensi dalam objek tiruan.
Diberikan di bawah ini adalah contoh MockObject menggunakan Jmock.
import org.jmock.Mockery;
import org.jmock.Expectations;
class PubTest extends TestCase {
Mockery context = new Mockery();
public void testSubReceivesMessage() {
// set up
final Sub sub = context.mock(Sub.class);
Pub pub = new Pub();
pub.add(sub);
final String message = "message";
// expectations
context.checking(new Expectations() {
oneOf (sub).receive(message);
});
// execute
pub.publish(message);
// verify
context.assertIsSatisfied();
}
}