Hi Team,
I have a git repository(Repo A) which has dependent on other main repository (Repo B). In Repo A we have a service implementation. In Repo B we have common code, here we have a util class and it has a static methods. We are calling these static methods from Repo B in Repo A. Now we are writing the Junit implementation for service class in Repo A. I am trying to mock this static method as mentioned below. Mockito.mockStatic(Utils.class); Mockito.when(Utils.getString()).thenReturn("Mocked string"); . i have added dependencies in my Repo A core POM and parent POM files.
I am facing issue i am not able to use the static method. I am seeing error "Cannot resolve method 'mockStatic' in 'Mockito'". Can someone help me on this issue. Your help is much appreciated.
https://sourcedcode.com/blog/aem/junit/junit5/mocking-static-methods-in-junit5
Thanks,
Praveena.
Views
Replies
Total Likes
You can check the below community post
https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/junit-for-accesscontroluti...
Additionally, you can explore the GitHub commit where we've mocked the HttpClient.newBuilder static method. https://github.com/MahediSabuj/aem-demo/commit/677d316157b98757490d59fa723ea77602127405
Views
Replies
Total Likes
Hi @PraveenaTh , Please make sure you are using latest version of Junit and mockito dependencies.
MockedStatic was introduced in mockito 3.4.3. If your mockito version is previous version of that it won't work.
Please try with below,
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.9.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.9.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.9.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>5.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>5.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit-addons</groupId>
<artifactId>junit-addons</artifactId>
<version>1.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.wcm</groupId>
<artifactId>io.wcm.testing.aem-mock.junit5</artifactId>
<version>5.1.0</version>
<scope>test</scope>
</dependency>
Views
Replies
Total Likes
Hi,
The problem is that in some Mockito versions, the mockStatic
method was disabled by default. There are a couple of ways to configure this, but I think the easiest one is just to use the mockito-inline
dependency instead of mockito-core
. Try something like this:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>5.2.0</version>
<scope>test</scope>
</dependency>
References:
https://wttech.blog/blog/2020/mocking-static-methods-made-possible-in-mockito-3.4.0/
https://github.com/mockito/mockito/issues/2528
Hope this helps
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies