-
Notifications
You must be signed in to change notification settings - Fork 41.9k
Closed
Description
Possibly related to #39270, there is also an issue when a test in a class is disabled. Example:
package com.example.demo;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.MockedStatic;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import java.util.UUID;
import static org.assertj.core.api.Assertions.assertThat;
//@ExtendWith(MockitoExtension.class)
@ExtendWith(SpringExtension.class)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
class MultipleTestsNotNestedTests {
private static final UUID uuid = UUID.randomUUID();
@Mock
private MockedStatic<UUID> mockedStatic;
@Test
@Order(1)
@Disabled
void shouldReturnConstantValueDisabled() {
mockedStatic.when(UUID::randomUUID).thenReturn(uuid);
UUID result = UUID.randomUUID();
assertThat(result).isEqualTo(uuid);
}
@Test
@Order(2)
void shouldReturnConstantValue() {
mockedStatic.when(UUID::randomUUID).thenReturn(uuid);
UUID result = UUID.randomUUID();
assertThat(result).isEqualTo(uuid);
}
}Order is important, the @Disabled test must run (or be skipped) before, not after the other test. When preparing the test instance the second time, the MockedStatic from the first run has not been closed, and the test fails with:
org.mockito.exceptions.base.MockitoException:
For java.util.UUID, static mocking is already registered in the current thread
To create a new mock, the existing static mock registration must be deregistered
Removing the @Disabled annotation results in the test passing. Again, using the MockitoExtension instead of the SpringExtension also results in the test working as expected with the @Disabled test.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
type: bugA general bugA general bug