Mockito/PowerMockito: Verspottete Methode, die Null zurückgibt oder Stackoverflowerror verursacht

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Mockito/PowerMockito: Verspottete Methode, die Null zurückgibt oder Stackoverflowerror verursacht

by Anonymous » 15 Feb 2025, 12:02

Ich schreibe einen Junit 4 -Test mit Mockito 2 und PowerMockito, aber mit seltsamer Probleme konfrontiert, während er eine Methode verspottet. class = "Lang-Java PrettyPrint-Override">

Code: Select all

@Test

public void testCheckCreatedBeforeDate() throws Exception {

PowerMockito.mockStatic(ServiceInfo.class);

ServiceInfo mockServiceInfo = mock(ServiceInfo.class);

when(ServiceInfo.getInstance(anyString())).thenReturn(mockServiceInfo);

when(mockServiceInfo.getCreationDate()).thenReturn(new Date()); // Issue happens here

assertEquals(Boolean.TRUE, myUtils.isCreatedBeforeDate(anyString()));

}

< /code>
und die Methode, die getestet wird: < /p>

public Boolean isCreatedBeforeDate(String serviceId) {

try {

ServiceInfo serviceInfo = ServiceInfo.getInstance(serviceId);

LocalDate creationDate = serviceInfo.getCreationDate().toInstant()

.atZone(ZoneId.systemDefault())

.toLocalDate();

return creationDate.isBefore(LAUNCH_DATE);

} catch (SQLException e) {

throw new RuntimeException("Error checking creation date", e);

}

}

Probleme, mit denen ich ausgesetzt bin :
1️⃣

Code: Select all

PowerMockito.when(mockServiceInfo.getCreationDate()).thenReturn(new Date());
[/b] → löst StackoverFlowerror
2️⃣ aus

Code: Select all

PowerMockito.doReturn(new Date()).when(mockServiceInfo).getCreationDate();
[/b] → Gibt NULL
3️⃣ zurück

Code: Select all

when(mockServiceInfo.getCreationDate()).thenReturn(new Date());
[/b] → Gibt NULL nach der Ausführung
4️⃣ Bewertung von MockServiceInfo.getCreationDate () in Debugger → Gibt NULL
5️⃣ zurück

Code: Select all

mockingDetails(mockServiceInfo).isMock()
vor Stubbing [/b] → ✅ Gibt true
6️⃣ zurück

Code: Select all

mockingDetails(mockServiceInfo).isMock()
Nach Stubbing [/b] → ❌ Gibt false
Fragen : < BR/>
[*] Warum ist MockServiceInfo.getCreationDate () Null oder einen Stackoverflowerror ?
zurückgebracht < /li>
Gibt es einen Konflikt zwischen statischer und Instanzverspottung? Verspotten Sie dieses Verhalten?
Verwenden von Doreturn (neuer Datum ()). Wenn (MockServiceInfo) .GetCreationDate (); < /code> < /p>
< /li>
Überprüfen Sie, ob MockServiceInfo ein ordnungsgemäßes Mock

[*] ist, um Mockstatic (serviceInfo.class) wird vor dem Verspottungs -Instanzmethoden durchgeführt

[/u]

Top