全部产品
Search
文档中心

AI Coding Assistant Lingma:Praktik terbaik untuk pengujian unit

更新时间:Jun 28, 2025

Pelajari cara menulis pengujian unit yang efektif menggunakan Lingma.

Apa itu pengujian unit?

Pengujian unit adalah metode pengujian perangkat lunak di mana pengembang menulis kode untuk memverifikasi kebenaran unit-unit terkecil dari aplikasi yang dapat diuji, seperti fungsi, metode, atau kelas. Pengembang menulis pengujian unit selama atau setelah implementasi fitur guna memastikan setiap unit berfungsi sesuai dengan desain yang diharapkan.

Nilai pengujian unit

Nilai pengujian unit terutama tercermin dalam peningkatan kualitas dan keandalan perangkat lunak, memastikan bahwa kode terus berfungsi dengan baik setelah modifikasi atau refactoring. Keuntungan dari pengujian unit meliputi hal-hal berikut:

  • Peningkatan Kualitas Kode: Mengidentifikasi kesalahan dan kerentanan dalam kode, sehingga meningkatkan kualitas dan keandalannya.

  • Peningkatan Efisiensi Pengembangan: Mendeteksi masalah secara cepat selama pengembangan, mengurangi siklus pengembangan dan biaya.

  • Refactoring dan Pemeliharaan yang Lebih Mudah: Memastikan bahwa kode tidak memperkenalkan kesalahan baru selama proses refactoring dan pemeliharaan.

  • Peningkatan Kolaborasi Tim: Berfungsi sebagai alat komunikasi antar anggota tim, meningkatkan efisiensi dan kualitas kolaborasi.

Selain itu, pengujian unit memungkinkan deteksi kegagalan perangkat lunak pada tahap awal, mencegah kerugian akibat kesulitan mengidentifikasi dan memperbaiki bug di kemudian hari. Kelayakan regresi dari pengujian unit memberikan perlindungan keamanan untuk perangkat lunak dan refactoring berikutnya. Pengujian unit juga menyediakan instruksi dan contoh kode untuk menunjukkan cara menggunakan unit perangkat lunak.

Prinsip yang harus diikuti

Pengujian unit yang memadai harus memastikan kualitas pengujian perangkat lunak. Dari perspektif makro, pengujian unit yang baik harus otomatis (A), independen (I), dan dapat diulang (R).

  • A: Otomatis: Pengujian unit harus dieksekusi secara otomatis untuk dengan cepat memastikan bahwa kode baru tidak merusak fungsionalitas yang ada saat kode berubah. Biasanya, pengujian unit diintegrasikan ke dalam integrasi berkelanjutan, yang secara otomatis memicu pengujian setiap kali kode diperbarui.

  • I: Independen: Setiap pengujian unit harus independen dan tidak bergantung pada urutan eksekusi atau hasil pengujian lainnya. Untuk memastikan independensi, unit terkecil dari aplikasi yang dapat diuji harus diuji secara terpisah.

  • R: Dapat Diulang: Pengujian unit yang baik harus menghasilkan hasil yang sama di bawah kondisi yang sama setiap kali dijalankan. Pengujian tidak boleh bergantung pada faktor eksternal seperti jaringan, database, atau sistem file. Ketergantungan eksternal ini harus dimock dengan benar.

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

Tulis pengujian unit

Berikut ini menjelaskan cara menulis pengujian unit dalam Java.

Pecahkan kasus uji rinci

Pertimbangkan cabang-cabang

Ketika menulis pengujian unit, Anda harus mempertimbangkan semua cabang dalam kode Anda. Cabang termasuk pernyataan IF, IF ELSE, dan SWITCH. Setiap cabang harus diuji secara terpisah. Sebagai contoh:

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

Dalam kode sebelumnya, cabang-cabang berikut harus diuji:

  • number < 0.

  • number == 0.

  • number > 0.

Anda harus menulis kasus uji untuk setiap cabang.

Temukan kondisi batas

Selain cabang, Anda harus mempertimbangkan kondisi batas. Misalnya, untuk fungsi klasifikasi sebelumnya, nilai batasnya adalah -1, 0, dan 1. Pengujian kondisi batas dapat mengidentifikasi masalah potensial dan memastikan bahwa kode dapat bekerja dengan baik dalam kondisi ekstrem.

Tetapkan standar pengujian yang seragam

Konvensi penamaan

Kelas pengujian unit diberi nama dalam format berikut: NamaKelas + Test. Sebagai contoh, jika Anda ingin menguji kelas Calculator, kelas pengujian unit diberi nama CalculatorTest. Nama metode pengujian unit 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 pengujian unit disimpan di bawah nama paket yang sama dengan kelas yang akan diuji tetapi di direktori yang berbeda. Sebagai contoh, dalam struktur standar proyek Maven, kode sumber disimpan di direktori src/main/java, dan kode pengujian unit 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 pengujian unit yang umum digunakan dalam Java. Bagian ini menjelaskan cara menggunakan kedua framework ini untuk menulis pengujian unit dasar:

Junit

JUnit adalah framework pengujian unit paling terkenal dalam Java. Framework ini ringkas, mudah digunakan, dan menyediakan anotasi serta asersi yang luas.

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

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

    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 objek mock dan menyederhanakan pengujian unit, terutama ketika pengujian dependensi tidak mudah 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 pengujian unit:

    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 pengujian unit dengan cepat menggunakan Lingma

Sebagian besar pengembang mengadopsi pendekatan pengembangan pengujian-nanti berdasarkan kebiasaan pemrograman mereka. Ini berarti mereka menulis kode terlebih dahulu dan kemudian menulis pengujian unit nanti untuk kode tersebut. Dalam konteks ini, menggunakan Lingma untuk menghasilkan pengujian unit sangatlah nyaman. Bagian berikut ini menjelaskan beberapa cara untuk menghasilkan pengujian unit menggunakan Lingma.

Hasilkan pengujian unit dengan memilih kode

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

整屏示例@1x (5)

Catatan

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

Hasilkan pengujian unit menggunakan tombol pintasan

Klik ikon Lingma di atas setiap tanda tangan metode, dan pilih UnitTest di menu drop-down.

image

Anda juga dapat memilih blok kode untuk menghasilkan pengujian unit. Klik kanan blok kode yang dipilih, dan pilih Lingma > Unit Test.

image

Terapkan pengujian unit

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

  • Masukkan Kode: Memungkinkan Anda memasukkan kode pengujian unit yang dihasilkan ke dalam file yang sedang dibuka.

  • Salin: Memungkinkan Anda menyalin kode pengujian unit yang dihasilkan di blok kode dan memilih file tempat Anda ingin menempelkan kode tersebut.

  • Buat File: Memungkinkan Anda menghasilkan file kelas pengujian unit berdasarkan prinsip pengujian unit dalam Java di direktori tes tempat metode pengujian unit disimpan. Jika file kelas pengujian unit dengan nama yang sama sudah ada, Anda harus menentukan apakah akan menimpa file yang ada.

image

Ajukan pertanyaan tentang pengujian unit yang dihasilkan

Jika Anda tidak puas dengan kode pengujian unit yang dihasilkan, atau jika Anda perlu menggunakan framework pengujian unit tertentu atau menghasilkan lebih banyak metode pengujian unit, masukkan pertanyaan Anda di kotak obrolan atau klik tag pertanyaan pengujian unit yang telah ditentukan sebelumnya, seperti Coba lagi, Gunakan Mockito, Gunakan Spring Test, dan Jelaskan kode, untuk mengajukan lebih banyak pertanyaan hingga Anda puas dengan kode pengujian unit yang dihasilkan.

image

Catatan

Dalam kebanyakan kasus, Lingma akan menghasilkan kasus uji umum tetapi tidak mencakup semua skenario yang mungkin. Jika Anda menganggap bahwa kasus uji yang dihasilkan tidak cukup, disarankan untuk: 1. Pertama terima kasus uji yang dihasilkan dan tambahkan ke file uji Anda. 2. Lalu beralih ke file uji dan gunakan fitur penyelesaian kode. Lingma akan membantu Anda menulis kasus uji baru.

Ringkasan

Pengujian unit adalah praktik pemrograman penting untuk memastikan kualitas kode. Pendekatan pengujian-pertama dalam pengembangan berbasis pengujian (TDD) secara signifikan mendorong desain kode yang lebih baik melalui iterasi. Lingma dapat membantu dengan mengurangi beban kerja dalam menyiapkan framework pengujian unit dan menulis kasus uji, sambil menjaga kasus uji tetap mutakhir dengan menyarankan skenario pengujian tambahan dan menyesuaikan pengujian dengan perubahan kode.