Rumah  >  Artikel  >  Java  >  Suntikan kebergantungan menggunakan rangka kerja ujian unit JUnit

Suntikan kebergantungan menggunakan rangka kerja ujian unit JUnit

王林
王林asal
2024-04-19 08:42:02962semak imbas

Untuk menguji suntikan kebergantungan menggunakan JUnit, ringkasannya adalah seperti berikut: Gunakan objek olok-olok untuk mencipta kebergantungan: Anotasi @Mock mencipta objek olok-olok untuk kebergantungan. Tetapkan data ujian: Kaedah @Sebelum dijalankan sebelum setiap kaedah ujian dan digunakan untuk menetapkan data ujian. Mengkonfigurasi gelagat olok-olok: Kaedah Mockito.when() mengkonfigurasi gelagat yang dijangkakan bagi objek olok-olok. Sahkan keputusan: assertEquals() penegasan menyemak sama ada keputusan sebenar sepadan dengan nilai yang dijangkakan. Aplikasi praktikal: Anda boleh menggunakan rangka kerja suntikan kebergantungan (seperti Rangka Kerja Spring) untuk menyuntik kebergantungan, dan mengesahkan ketepatan suntikan dan operasi biasa kod melalui ujian unit JUnit.

Suntikan kebergantungan menggunakan rangka kerja ujian unit JUnit

Gunakan rangka kerja ujian unit JUnit untuk suntikan kebergantungan

Dalam pembangunan perisian, suntikan kebergantungan ialah corak reka bentuk berkuasa yang membolehkan kami mengurus kebergantungan antara objek secara fleksibel. Menggunakan rangka kerja ujian unit JUnit boleh membantu kami menguji kod yang diuruskan oleh suntikan pergantungan.

Contoh kod

Ambil kelas Java yang mudah sebagai contoh:

public class MyService {
    private DataProvider dataProvider;

    public MyService(DataProvider dataProvider) {
        this.dataProvider = dataProvider;
    }

    public String getFormattedData() {
        return dataProvider.getData().toUpperCase();
    }
}

Ujian unit

Anda boleh menggunakan JUnit untuk menulis ujian unit untuk menguji kelas MyService:

import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.Mockito;

import static org.junit.Assert.assertEquals;

public class MyServiceTest {

    @Mock
    private DataProvider dataProvider;

    private MyService service;

    @Before
    public void setup() {
        service = new MyService(dataProvider);
    }

    @Test
    public void shouldFormatDataCorrectly() {
        Mockito.when(dataProvider.getData()).thenReturn("hello world");
        String formattedData = service.getFormattedData();
        assertEquals("HELLO WORLD", formattedData);
    }
}
MyService 类:

rrreee

在此测试中:

  • @Mock 注解创建了 DataProvider 的一个模拟对象。
  • @Before 方法在每个测试方法之前运行,用于设置测试数据。
  • @Test 注解标记了一个测试方法,用于测试 MyService 类中的 getFormattedData() 方法。
  • Mockito.when() 方法配置了 DataProvider 的模拟行为,使它在 getData() 方法被调用时返回"hello world"。
  • assertEquals() 断言检查 getFormattedData() 方法返回的格式化数据是否与预期值匹配。

实际案例

在实际应用中,可以使用依赖注入框架(如 Spring Framework)将 DataProvider 实例注入到 MyServiceDi sini Dalam ujian:

  • Anotasi @Mock mencipta objek tiruan DataProvider. Kaedah
  • @Sebelum dijalankan sebelum setiap kaedah ujian dan digunakan untuk menetapkan data ujian.
  • Anotasi @Test menandakan kaedah ujian untuk menguji kaedah getFormattedData() dalam kelas MyService.
  • Kaedah Mockito.when() mengkonfigurasikan tingkah laku mengejek DataProvider supaya ia dipanggil apabila getData() kaedah dipanggil Returns "hello world".
  • assertEquals() Penegasan menyemak sama ada data berformat yang dikembalikan oleh kaedah getFormattedData() sepadan dengan nilai yang dijangkakan.
🎜🎜Kes sebenar🎜🎜🎜Dalam aplikasi sebenar, anda boleh menggunakan rangka kerja suntikan pergantungan (seperti Rangka Kerja Spring) untuk menyuntik contoh DataProvider ke dalam MyService kelas. Dengan menggunakan JUnit untuk ujian unit, kami boleh mengesahkan ketepatan suntikan pergantungan dan memastikan kod berjalan dengan betul di bawah senario yang berbeza. 🎜

Atas ialah kandungan terperinci Suntikan kebergantungan menggunakan rangka kerja ujian unit JUnit. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn