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
Twój test nie zawiera niczego, co wymagałoby interwencji Springa, więc oczywiście nie potrzebujesz go. –
@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
Także myślenie w inny sposób - Czy naprawdę potrzebujemy bibliotek SpringJUnit4ClassRunner i Spring w Junits? – Ayaskant