Spring : Pengantar Praktis Inversion of Control (IoC) – Unit Test Beans dari Application Context

Oleh : Reza Ervani

بسم الله الرحمن الرحيم

Ada dua tipe pengujian yang umumnya dilakukan oleh para pengembang sebelum mereka melepas kodenya ke fase produksi. Pengujian fungsional adalah pengujian yang kita lakukan saat aplikasi kita sudah sebagian besar terbangun dan kita ingin meyakinkan bahwa segalanya bekerja sesuai dengan kebutuhan fungsional yang diinginkan.

Pengujian unit adalah proses dimana kita menguji tiap komponen aplikasi kita dalam suatu isolasi. Pengujian unit dapat dilakukan jauh lebih maju pada pengujian fungsional dan rilis kode. EJB sulit untuk melakukan pengujian unit dikarenakan rumit untuk memisahakn mereka dari kontainer untuk pengujian. Spring membua pengujian unit mudah dikarenakan tiap komponen ditujukan untuk menjadi entitas bagi dirinya sendiri – dapat dipanggil dari mana saja.

Pengujian uni adalah bagian penting dalam proses pengembangan, begitu penting sehingga beberapa metodologi, seperti Agile, membutuhkan pengujian unit untuk ditulis sebalum class yang akan diuji. Tentu menulis pengujian unit di kesempatan pertama akan memberikan kita ide yang lebih jelas terkait penggunaan kasus bagi file class yang kita miliki. Tetapi nilai sesungguhnya dari pengujian unit adalah memberikan kita kemampuan untuk mengisolasi masalah yang mungkin hadir di kode kita. Hal ini akan menyingkat waktu yang dibutuhkan untuk mendebug kode dan membawa kita lebih cepat ke fase produksi.

Saat kita membuat pengujian unit, kita dapat mengornisir merkea ke dalam serangkaian tes. Ada beberapa produk pihak ketiga dan open source yang dapat membantu kita menset up dan mengadakan pengujian unit. JUnit (http://www.junit.org) adalah framework pengujian paling populer dan dapat diintegrasikan dengan Ant, Maven, Eclipse IDE dan yang lainnya. Maven (http://maven.apache.org) adalah framework pembuatan yang dapat digunakan untuk compiling, assembling jar dan melakukan pengujian unit. Semua contoh yang disertakan disini dapat dibuat dan diuji menggunakan Maven, serta plugin JUnit untuk Eclipse memperkenankan kita untuk melakukan pengujian unit didalam IDE.

Spring juga memiliki dukungan pengujian unit dan dapat mengurangi ukuran class-class pengujian kita jika kita menggunakan mereka. Kebanyakan pengujian unit diberikan anotasi @RunWith(SpringJUnit4ClassRunner.class) dan @ContextConfiguration.

@ContextConfiguration secara default memuat file konfigurasi XML dari paket dan menamakan pengujian plus “-context.xml”. Untuk  org.springbyexample.di.xml.SetterMessageTest, file XML default adalah org/springbyexample/di/xml/SetterMessageTest-context.xml.  File-file konfigurasi XML tertentu dapat diset pada anotasi jika secara default tidak dapat diterima.

Example 5. SetterMessageTest

SetterMessageTest akan menggunakan file konfigurasi XML Spring org/springbyexample/di/xml/SetterMessageTest-context.xml. Metode testMessage() method menggunakan SetterMessage yang diinjeksi ke dalam field dikarenakan anotasi @Autowired yang mengindikasikan field seharusnya di-autowire oleh tipe. Pada bagian akhir, metode testMessage() menggunakan metode JUnit assertNotNul dan assetEquals untuk menguji apakah instance SetterMessageTest tidak null, message tidak null dan apakah message menerima value. Untuk assertEquals parameter pertama adalah pesan error yang akan ditampilkan jika pengujian gagal. Parameter kedua adalah nilai yang diharapkan dan parameter ketiga adalah nilai dari bean message.


@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class SetterMessageTest {

final Logger logger = LoggerFactory.getLogger(SetterMessageTest.class);

@Autowired
private SetterMessage message = null;

/**
* Tests message.
*/
@Test
public void testMessage() {
assertNotNull("Constructor message instance is null.", message);

String msg = message.getMessage();

assertNotNull("Message is null.", msg);

String expectedMessage = "Spring is fun.";

assertEquals("Message should be '" + expectedMessage + "'.", expectedMessage, msg);

logger.info("message='{}'", msg);
}

}

SetterMessageTest-context.xml


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="message"
          class="org.springbyexample.di.xml.SetterMessage">
        <property name="message" value="Spring is fun." />
    </bean>

</beans>

 

About Reza Ervani
Adalah pendiri programming.rezaervani.com -

About Reza Ervani 381 Articles
Adalah pendiri programming.rezaervani.com -

Be the first to comment

Leave a Reply

Your email address will not be published.


*


This site uses Akismet to reduce spam. Learn how your comment data is processed.