“Mockito”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) |
Jihongchang(讨论 | 贡献) |
||
第42行: | 第42行: | ||
} | } | ||
} | } | ||
+ | </syntaxhighlight><syntaxhighlight lang="java"> | ||
+ | package love.wishx.hd_volunteer_center.service; | ||
+ | |||
+ | import love.wishx.hd_volunteer_center.BaseTest; | ||
+ | import love.wishx.hd_volunteer_center.entity.Role; | ||
+ | import love.wishx.hd_volunteer_center.service.impl.MySubServiceImpl; | ||
+ | import org.junit.jupiter.api.Test; | ||
+ | import org.mockito.Mockito; | ||
+ | import org.mockito.invocation.InvocationOnMock; | ||
+ | import org.mockito.stubbing.Answer; | ||
+ | import org.springframework.beans.factory.annotation.Autowired; | ||
+ | import org.springframework.boot.test.mock.mockito.MockBean; | ||
+ | |||
+ | import java.util.ArrayList; | ||
+ | import java.util.List; | ||
+ | |||
+ | public class IMyServiceTest extends BaseTest { | ||
+ | |||
+ | @Autowired | ||
+ | private IMyService myService; | ||
+ | |||
+ | @MockBean | ||
+ | private MySubServiceImpl subService; | ||
+ | |||
+ | @Test | ||
+ | public void test() { | ||
+ | |||
+ | Answer<Role> answer = new Answer<Role>() { | ||
+ | @Override | ||
+ | public Role answer(InvocationOnMock invocation) throws Throwable { | ||
+ | String a = invocation.getArgument(0, String.class); | ||
+ | Object b = invocation.getArgument(1, Object.class); | ||
+ | String c = invocation.getArgument(2, String.class); | ||
+ | System.out.printf("a=%s\n", a); | ||
+ | System.out.printf("b=%s\n", b.toString()); | ||
+ | System.out.printf("c=%s\n", c); | ||
+ | return (Role) invocation.callRealMethod(); | ||
+ | } | ||
+ | }; | ||
+ | |||
+ | Mockito.doAnswer(answer).when(subService).getRole(Mockito.anyString(), Mockito.any(), Mockito.anyString()); | ||
+ | |||
+ | List<Role> roleList = new ArrayList<>(); | ||
+ | Role tmp = new Role(); | ||
+ | tmp.setName("123"); | ||
+ | tmp.setId(2); | ||
+ | roleList.add(tmp); | ||
+ | |||
+ | Role r = myService.getRole("j", roleList, "k"); | ||
+ | |||
+ | System.out.println(r); | ||
+ | |||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
</syntaxhighlight> | </syntaxhighlight> |
2025年1月16日 (四) 16:07的版本
测试调用类的静态方法的示例
需要先引入:
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<scope>test</scope>
</dependency>
单元测试代码:
import org.junit.jupiter.api.Test;
import org.mockito.MockedStatic;
import org.mockito.Mockito;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
@ExtendWith(MockitoExtension.class)
public class MathUtilsTest {
@Test
public void testPrintSumMethodCalled() {
try (MockedStatic<MathUtils> mockedMathUtils = mockStatic(MathUtils.class)) {
// 模拟的调用场景,这里假设在某个业务逻辑代码中会调用MathUtils.printSum方法
// 例如以下是模拟调用
MathUtils.printSum(3, 5);
// 使用verify方法来验证MathUtils.printSum方法是否被调用,并且参数是否符合预期
mockedMathUtils.verify(() -> MathUtils.printSum(3, 5));
}
}
@Test
public void testPrintSumMethodCalledWithAnyParameters() {
try (MockedStatic<MathUtils> mockedMathUtils = mockStatic(MathUtils.class)) {
// 模拟的调用场景,这里假设在某个业务逻辑代码中会调用MathUtils.printSum方法
MathUtils.printSum(10, 20);
// 如果不关心具体传入的参数是什么,只想验证方法被调用了,可以使用anyInt()等参数匹配器(根据参数类型选择合适的匹配器)
mockedMathUtils.verify(() -> MathUtils.printSum(anyInt(), anyInt()));
}
}
}
package love.wishx.hd_volunteer_center.service;
import love.wishx.hd_volunteer_center.BaseTest;
import love.wishx.hd_volunteer_center.entity.Role;
import love.wishx.hd_volunteer_center.service.impl.MySubServiceImpl;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.mock.mockito.MockBean;
import java.util.ArrayList;
import java.util.List;
public class IMyServiceTest extends BaseTest {
@Autowired
private IMyService myService;
@MockBean
private MySubServiceImpl subService;
@Test
public void test() {
Answer<Role> answer = new Answer<Role>() {
@Override
public Role answer(InvocationOnMock invocation) throws Throwable {
String a = invocation.getArgument(0, String.class);
Object b = invocation.getArgument(1, Object.class);
String c = invocation.getArgument(2, String.class);
System.out.printf("a=%s\n", a);
System.out.printf("b=%s\n", b.toString());
System.out.printf("c=%s\n", c);
return (Role) invocation.callRealMethod();
}
};
Mockito.doAnswer(answer).when(subService).getRole(Mockito.anyString(), Mockito.any(), Mockito.anyString());
List<Role> roleList = new ArrayList<>();
Role tmp = new Role();
tmp.setName("123");
tmp.setId(2);
roleList.add(tmp);
Role r = myService.getRole("j", roleList, "k");
System.out.println(r);
}
}