Rumah  >  Artikel  >  Java  >  Penggunaan anotasi @spy dalam ujian junit

Penggunaan anotasi @spy dalam ujian junit

WBOY
WBOYasal
2024-08-12 18:49:52340semak imbas

Uses of @spy annotation in junit testing

Anotasi @Spy dalam JUnit, terutamanya apabila digunakan dengan Mockito, digunakan untuk mencipta pengintip pada objek sebenar. Perisik ialah olok-olok separa, yang bermaksud anda boleh mengejek beberapa kaedah objek sambil mengekalkan kelakuan sebenar kaedah lain.

Berikut ialah beberapa kegunaan biasa anotasi @Spy:

  1. Mengejek Separa:

    • Jika anda mempunyai objek di mana kebanyakan kaedah perlu mengekalkan tingkah laku sebenar mereka tetapi satu atau dua kaedah perlu dipermainkan, anda boleh menggunakan pengintip.
    • Contoh:
     @Spy
     private List<String> spyList = new ArrayList<>();
    
     @Test
     public void testSpy() {
         spyList.add("Mockito");
         Mockito.verify(spyList).add("Mockito");
         assertEquals(1, spyList.size());
    
         Mockito.doReturn(100).when(spyList).size();
         assertEquals(100, spyList.size());
     }
    
  2. Mengatasi Tingkah Laku Kaedah Sebenar:

    • Anda boleh menggunakan pengintip untuk mengatasi tingkah laku kaedah tertentu bagi objek sebenar sambil mengekalkan kaedah yang lain.
    • Contoh:
     @Spy
     private MyClass myClass = new MyClass();
    
     @Test
     public void testSpyWithMethodOverride() {
         Mockito.doReturn("Mocked Value").when(myClass).someMethod();
         assertEquals("Mocked Value", myClass.someMethod());
     }
    
  3. Mengesahkan Panggilan Kaedah:

    • Anda boleh mengesahkan sama ada kaedah tertentu dipanggil pada pengintip, yang membantu semasa menguji interaksi.
    • Contoh:
     @Spy
     private MyClass myClass = new MyClass();
    
     @Test
     public void testMethodCallVerification() {
         myClass.someMethod();
         Mockito.verify(myClass).someMethod();
     }
    
  4. Menggabungkan dengan @InjectMocks:

    • @Spy boleh digunakan bersama-sama dengan @InjectMocks untuk menyuntik objek intipan ke dalam objek yang sedang diuji, membenarkan ejekan separa dalam kelas yang diuji.
    • Contoh:
     @Spy
     private MyDependency dependency;
    
     @InjectMocks
     private MyService service;
    
     @Test
     public void testService() {
         Mockito.doReturn("Mocked Result").when(dependency).doSomething();
         assertEquals("Mocked Result", service.performAction());
     }
    
  5. Menguji Kod Warisan:

    • Apabila berurusan dengan kod warisan yang anda tidak boleh memfaktorkan semula dengan mudah, menggunakan pengintip membolehkan anda mengasingkan dan mengejek kaedah tertentu tanpa menukar kod asal.

Ringkasnya, anotasi @Spy berguna apabila anda perlu mengawal atau mengesahkan gelagat tertentu objek sebenar sambil mengekalkan gelagat objek yang lain tidak berubah.

Atas ialah kandungan terperinci Penggunaan anotasi @spy dalam ujian 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