2015-06-28 15 views
9

Mam pytanie dotyczące użycia SpringJUnit4ClassRunner. Czy w przypadku czystych jajek lub testów jednostkowych powinniśmy używać adnotacji sprężynowych, takich jak @Autowired i SpringJUnit4ClassRunner, czy zamiast tego powinniśmy używać tylko MockitoJUnitRunner z adnotacją @RunWith u góry klasy Test?Używanie MockitoJUnitRunner.class zamiast SpringJUnit4ClassRunner.class

mam na myśli zastąpienie

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration({ "classpath:test-applicationContext.xml" }) 

tylko z

@RunWith(MockitoJUnitRunner.class) 

na szczycie klasy. Mi to pasuje.

W Junits zwykle nie wykonujemy żadnych połączeń zewnętrznych, takich jak połączenia z DB lub połączenie z inną usługą sieciową. Musimy kpić z tych połączeń zewnętrznych, używając adnotacji @Mock w tych obiektach usługi. Następnie stwórz prawdziwy obiekt klasy, którą testujemy i który zależy od tych prób. Możemy następnie użyć obiektu @InjectMocks na rzeczywistym obiekcie, aby został on wstrzyknięty z wyśmiewanymi obiektami.

Przykład Service-A-> Calls-> Service-B-> Calls-> Usługi -C

Podczas testowania należy mock serwisowy b & podczas próbach eksploatacyjnych B należy mock serwisową C.

Niektóre fragment kodu

@RunWith(MockitoJUnitRunner.class) 
public class TestServiceA { 
    @Mock 
    B mockObj; 

    @InjectMocks 
    A realObj; 

    @Test 
    public void testServiceA() { 
    ..... 
    ..... 
    } 
}  

Tak, czuję do jednostkowych przypadków testowych nie musimy polegać na wiosennym pojemniku, aby zapewnić nam instancję klasy testujemy.

Proszę podać swoje sugestie.

Korzystanie SpringJUnit4ClassRunner.class zamiast MockitoJUnitRunner.class

+0

Twój test nie zawiera niczego, co wymagałoby interwencji Springa, więc oczywiście nie potrzebujesz go. –

+0

@SotiriosDelimanolis - Dziękuję za odpowiedź. Jest to w rzeczywistości fałszywy kod podobny do kodu mojego projektu. Właściwie na początku miał SpringJUnit4ClassRunner.class i ContextConfiguration ({"classpath: test-applicationContext.xml"}) na górze klasy i Autowired adnotacje na obu obiektach A i B. Nie było kpiny. Usunąłem je wszystkie. Więc zasadniczo chcę wiedzieć, czy to szyderstwo jest prawidłowym sposobem wykonywania Junits. Platforma testowa Do Spring zapewnia również wsparcie dla kpiących obiektów. Jak pokazano tutaj, używam biblioteki Mockito do fałszywych obiektów. – Ayaskant

+0

Także myślenie w inny sposób - Czy naprawdę potrzebujemy bibliotek SpringJUnit4ClassRunner i Spring w Junits? – Ayaskant

Odpowiedz

-2

do testów jednostkowych nie musimy Spring, ale trzeba instancję część kontekście Wiosny testy integracyjne, szydząc Data Access warstwy/integracja. Możesz użyć TestNG zamiast JUnit i użyć dowolnego z tych frameworków jako uprzęży dla Integracji, a nawet testów integracji systemu.

Powiązane problemy