I Frühling KlasseMockito wenn(). ThenReturn() verhält sich nicht wie erwartet, wenn lombok @RequiredArgsConstructor (onConstructor = @__ (@ Autowired)) verwendet wird
@Component
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
class MainServiceImpl implements MainService {
private final InternalService internalService;
public Set<String> do(String anything) {
Set<String> relevent = internalService.finaIntern(anything);
return relevent;
}
}
I Unit Test Fall schreibe sagen haben wie unten
@RunWith(MockitoJUnitRunner.class)
class TestMainServiceImpl {
@InjectMocks
private MainServiceImpl service;
@Mock
InternalService internalService;
@Before
public void init(){
MockitoAnnotations.initMocks(this);
}
@Test
public void testDo() {
Set<String> setData = new HashSet<>();
setData.add("ABC");
String a ="a";
when(internalService.finaIntern(any(String.class))
.thenReturn(setData);
Set<String> result = service.do(a);
assertTrue(!result.isEmpty());
}
}
Hier mein Testfall versagt, aber wenn ich letzte Form MainServiceImpl entfernen und eine explizite @Autowired wie unten
tun@Component
class MainServiceImpl implements MainService {
@Autowired
private InternalService internalService;
.....
Hier bin ich neugierig 1. zu wissen, wie funktioniert mein Testfall passieren, wenn ich Schlüsselwort final entferne 2. Ist es eine gute Praxis @RequiredArgsConstructor zu verwenden, wenn ja, dann wie und ob nicht dann auch, warum?
Vielen Dank im Voraus
Ihr Test macht keinen Sinn ... Sie erstellen einen Mock und injizieren ihn in den Testfall und nicht in den 'MainServiceImpl'. Entweder Sie zeigen nicht den Code, wie Sie verwenden, oder Ihr Code ist wirklich borked. –
@M.Deinum Da ich aus Gründen der Sicherheit hier keinen Code schreiben kann, habe ich ähnliche Klassen eingegeben. Es war ein Schreibfehler. Ich habe es geändert. – MishraJi
Sie haben auch eine Doppel-Init, Sie laufen bereits mit dem 'MockitoJUnitRunner', aber initialisieren Sie sie erneut in Ihrer '@ before'-Methode. Sie müssen sie initiieren (besonders wegen Ihrer letzten Mitglieder). –