I have a Component class called AppUtil with a bunch of public static methods:
@Component
public class AppUtil {
// Methods, fields...
public static List<String> getActiveProfiles() {
return newArrayList(appUtil.env.getActiveProfiles());
}
public static String readResourceFileAsString(String fileName) throws IOException {
return IOUtils.toString(new FileReader(fileName));
}
// More methods....
}
The two static methods writen above are called by a method called loadUserByUsername of a class called GearApiUserDetailsService. In order to test GearApiUserDetailsService.loadUserByUsername, I want to mock the calls to these static methods of AppUtil. This is what my unit testing class looks like right now:
@RunWith(MockitoJUnitRunner.class)
public class GearApiUserDetailsServiceTest {
@InjectMocks
private GearApiUserDetailsService gearApiUserDetailsService;
@Before
public void setUp(){
MockitoAnnotations.openMocks(this);
}
@Test
public void testLoadUserByUsernameWithoutActiveProfiles(){
try (MockedStatic<AppUtil> mockedStatic = Mockito.mockStatic(AppUtil.class)) {
mockedStatic.when(AppUtil::getActiveProfiles).thenReturn(Collections.emptyList());
mockedStatic.when(AppUtil::readResourceFileAsString).thenReturn("random string");
final String apiKey = "someExampleAPIKey";
UserDetails userDetails = gearApiUserDetailsService.loadUserByUsername(apiKey);
assertEquals(apiKey, userDetails.getUsername());
}
}
}
The problem is that while the mock of getActiveProfiles works well (tested), the mock of readResourceFileAsString fails at compile time even, with IntelliJ reporting that it can't resolve it:

The methods are both public and static, with the only difference being that the second one takes an argument.
This 2020 post seems to suggest ensuring that the pom file contains a dependency of mockito-core at version 3.5.13. I have included this dependency, invalidated caches / restarted, tried to re-run entire maven build lifecycle, but obviously it still fails at compile time because of the aforementioned error. Ideas? (=