All Products
Search
Document Center

Seri Qoder CN:Praktik terbaik untuk unit testing

Last Updated:Sep 05, 2026

Pelajari cara menulis unit test yang efektif menggunakan Qoder CN.

Apa itu unit testing?

Unit testing adalah metode pengujian perangkat lunak di mana developer menulis kode untuk memverifikasi kebenaran unit terkecil yang dapat diuji dalam sebuah aplikasi, seperti fungsi, metode, atau kelas. Developer menulis unit test selama atau setelah implementasi fitur untuk memastikan setiap unit berfungsi sesuai rancangan.

Nilai unit testing

Nilai unit testing terutama tercermin pada peningkatan kualitas dan keandalan perangkat lunak serta memastikan bahwa kode tetap berfungsi dengan baik setelah modifikasi atau refactoring. Keunggulan unit testing meliputi hal-hal berikut:

  • Kualitas kode yang lebih baik: Menemukan error dan kerentanan dalam kode sehingga meningkatkan kualitas dan keandalannya.

  • Efisiensi pengembangan yang lebih tinggi: Mengidentifikasi masalah secara cepat selama pengembangan, mengurangi siklus dan biaya pengembangan.

  • Refactoring dan maintenance yang lebih mudah: Memastikan bahwa kode tidak memperkenalkan error atau kerentanan baru selama refactoring dan maintenance.

  • Kolaborasi tim yang lebih baik: Berfungsi sebagai alat komunikasi dan kolaborasi antar anggota tim, meningkatkan efisiensi dan kualitas kolaborasi.

Selain itu, unit testing memungkinkan Anda mendeteksi kegagalan perangkat lunak sedini mungkin, sehingga mencegah kerugian akibat kesulitan mengidentifikasi dan memperbaiki bug di kemudian hari. Kemampuan regresi dari unit testing memberikan perlindungan bagi perangkat lunak dan proses refactoring selanjutnya. Unit testing juga menyediakan petunjuk dan contoh kode untuk menunjukkan cara menggunakan unit perangkat lunak.

Prinsip yang harus diikuti

Unit testing yang memadai bersifat tak terasa seperti udara dan harus menjamin kualitas pengujian perangkat lunak. Dari perspektif makro, unit testing yang memadai harus bersifat automatic (A), independent (I), dan repeatable (R).

  • A: Automatic: Unit test harus dieksekusi secara otomatis untuk dengan cepat memastikan bahwa kode yang baru ditambahkan tidak merusak fungsionalitas yang sudah ada saat terjadi perubahan kode. Biasanya, unit test diintegrasikan ke dalam continuous integration dan secara otomatis dipicu setiap kali kode berubah.

  • I: Independent: Setiap unit test harus independen dan tidak bergantung pada urutan eksekusi atau hasil test lain. Untuk memastikan kemandirian unit test, unit terkecil yang dapat diuji dalam aplikasi harus diuji.

  • R: Repeatable: Unit test yang baik harus menghasilkan hasil yang sama dalam kondisi yang sama setiap kali dijalankan. Test tidak boleh bergantung pada faktor eksternal, seperti jaringan, database, atau file system. Ketergantungan eksternal tersebut harus dimock dengan benar.

Selain itu, unit test yang baik juga harus memiliki assertion yang jelas, eksekusi yang cepat, pengujian batas yang menyeluruh, dan cakupan (coverage) yang tinggi. Unit test yang mengikuti prinsip-prinsip ini memenuhi syarat dan merupakan bagian penting dari jaminan kualitas kode.

Menulis unit test

Bagian ini menjelaskan cara menulis unit test dalam Java.

Pecah kasus uji secara detail

Pertimbangkan cabang (branches)

Saat menulis unit test, Anda harus mempertimbangkan semua cabang dalam kode Anda. Cabang mencakup pernyataan IF, IF ELSE, dan SWITCH. Setiap cabang harus diuji secara terpisah. Contohnya:

public String classifyNumber(int number) {
    if (number < 0) {
        return "negative";
    } else if (number == 0) {
        return "zero";
    } else {
        return "positive";
    }
}

Dalam kode di atas, cabang-cabang berikut harus diuji:

  • number < 0.

  • number == 0.

  • number > 0.

Anda harus menulis satu kasus uji untuk setiap cabang.

Temukan kondisi batas (boundary conditions)

Selain cabang, Anda juga harus mempertimbangkan kondisi batas. Misalnya, untuk fungsi klasifikasi di atas, nilai batasnya adalah -1, 0, dan 1. Pengujian kondisi batas dapat mengidentifikasi potensi masalah dan memastikan bahwa kode berfungsi dengan baik dalam kondisi ekstrem.

Tetapkan standar uji yang terpadu

Konvensi penamaan

Kelas unit test diberi nama dengan format berikut: Nama kelas + Test. Misalnya, jika Anda ingin menguji kelas Calculator, kelas unit test-nya diberi nama CalculatorTest. Nama metode unit test harus menggambarkan konten spesifik yang akan diuji. Contohnya:

public class CalculatorTest {
    @Test
    public void testAddition() {
        // Konten yang akan diuji.
    }
    @Test
    public void testSubtraction() {
        // Konten yang akan diuji.
    }
}

Jalur penyimpanan

Secara umum, kelas unit test disimpan di bawah package yang sama dengan kelas yang diuji, tetapi dalam direktori yang berbeda. Misalnya, dalam struktur standar proyek Maven, kode sumber disimpan di direktori src/main/java, sedangkan kode unit test disimpan di direktori src/test/java.

src/main/java/com/example/Calculator.java
src/test/java/com/example/CalculatorTest.java

Pilih framework pengujian yang tepat

JUnit dan Mockito adalah framework unit testing umum dalam Java. Bagian ini menjelaskan cara menggunakan kedua framework tersebut untuk menulis unit test dasar:

JUnit

JUnit adalah framework unit testing paling terkenal dalam Java. Framework ini ringkas, mudah digunakan, dan menyediakan banyak anotasi serta assertion.

  1. Tambahkan JUnit sebagai dependensi. Dalam contoh ini, digunakan dependensi Maven.

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>
  2. Tulis unit test:

    import org.junit.Test;
    import static org.junit.Assert.*;
    
    public class CalculatorTest {
        @Test
        public void testAddition() {
            Calculator calculator = new Calculator();
            assertEquals(5, calculator.add(2, 3));
        }
    }

Mockito

Mockito adalah framework mocking yang kuat yang memungkinkan Anda membuat mock object dan menyederhanakan unit testing, terutama ketika dependensi yang diuji sulit dibuat.

  1. Tambahkan Mockito sebagai dependensi:

    <dependency>
      <groupId>org.mockito</groupId>
      <artifactId>mockito-core</artifactId>
      <version>3.11.2</version>
      <scope>test</scope>
    </dependency>
  2. Tulis unit test:

    import static org.mockito.Mockito.*;
    import org.junit.Test;
    
    public class UserServiceTest {
        @Test
        public void testGetUser() {
            UserService userService = new UserService();
            UserRepository mockRepo = mock(UserRepository.class);
    
            when(mockRepo.findUserById(1)).thenReturn(new User(1, "John Doe"));
            userService.setUserRepository(mockRepo);
    
            User user = userService.getUserById(1);
            assertNotNull(user);
            assertEquals("John Doe", user.getName());
        }
    }

Cara menghasilkan unit test dengan cepat menggunakan Qoder CN

Sebagian besar developer menerapkan pendekatan test-later berdasarkan kebiasaan pemrograman mereka, yaitu menulis kode terlebih dahulu lalu menulis unit test setelahnya. Dalam konteks ini, penggunaan Qoder CN untuk menghasilkan unit test sangatlah praktis. Bagian berikut menjelaskan beberapa cara menghasilkan unit test menggunakan Qoder CN.

Hasilkan unit test dengan memilih kode

Di editor IDE, pilih sepotong kode dan gunakan /unittest untuk menghasilkan unit test yang sesuai dengan kode yang dipilih.

Catatan

Saat menggunakan perintah /unit test, tambahkan konteks di kotak chat untuk menghasilkan kasus uji yang lebih sesuai dengan kebutuhan developer. Misalnya, jika Anda perlu mendukung JUnit5 atau menggunakan Mockito untuk mocking, Anda dapat menggunakan /unit test JUnit5 Mockito. Dua kata kunci setelah perintah tersebut merupakan parameter untuk perintah tersebut. Metode ini juga berlaku untuk perintah lainnya.

Hasilkan unit test menggunakan tombol pintasan

Klik ikon Qoder CN di atas signature setiap metode, lalu pilih UnitTest pada menu drop-down.

Anda juga dapat memilih blok kode untuk menghasilkan unit test. Klik kanan pada blok kode yang dipilih, lalu pilih Qoder CN > Unit Test.

Terapkan unit test

Setelah kode unit test dihasilkan, tiga ikon tersedia di pojok kanan atas blok kode di panel AI Chat:

  • Insert Code: memungkinkan Anda memasukkan kode unit test yang dihasilkan ke dalam file yang sedang dibuka.

  • Copy: memungkinkan Anda menyalin kode unit test yang dihasilkan dalam blok kode dan memilih file tujuan untuk menempelkan kode tersebut.

  • Create File: memungkinkan Anda menghasilkan file kelas unit test berdasarkan prinsip unit testing dalam Java di direktori test tempat metode unit test disimpan. Jika file kelas unit test dengan nama yang sama sudah ada, Anda harus menentukan apakah akan menimpa file yang sudah ada.

Ajukan pertanyaan tentang unit test yang dihasilkan

Jika Anda tidak puas dengan kode unit test yang dihasilkan, atau jika Anda perlu menggunakan framework unit test tertentu atau menghasilkan lebih banyak metode unit test, masukkan pertanyaan Anda di kotak chat atau klik tag pertanyaan unit test preset, seperti Retry, Use Mockito, Use Spring Test, dan Explain code, untuk mengajukan pertanyaan lebih lanjut hingga Anda puas dengan kode unit test yang dihasilkan.

Catatan

Dalam kebanyakan kasus, Qoder CN akan menghasilkan kasus uji umum tetapi tidak mencakup semua skenario yang mungkin. Jika Anda merasa kasus uji yang dihasilkan tidak cukup, disarankan untuk: 1. Terlebih dahulu menerima kasus uji yang dihasilkan dan menambahkannya ke file uji Anda. 2. Lalu beralih ke file uji tersebut dan gunakan fitur penyelesaian kode. Qoder CN akan membantu Anda melanjutkan penulisan kasus uji baru.

Ringkasan

Unit testing merupakan praktik pemrograman penting untuk menjamin kualitas kode. Pendekatan test-first dalam test-driven development (TDD) secara signifikan mendorong desain kode yang lebih baik melalui iterasi. Qoder CN dapat membantu dengan mengurangi beban kerja dalam menyiapkan framework unit testing dan menulis kasus uji, sekaligus menjaga kasus uji tetap mutakhir dengan menyarankan skenario uji tambahan dan menyesuaikan uji terhadap perubahan kode.