base project
- <parent>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-parent</artifactId>
- <version>2.6.11</version>
- <relativePath/>
- </parent>
-
- <dependencies>
- <!--添加mysql依赖-->
- <dependency>
- <groupId>org.mariadb.jdbc</groupId>
- <artifactId>mariadb-java-client</artifactId>
- <version>2.7.2</version>
- </dependency>
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus-boot-starter</artifactId>
- <version>3.5.2</version>
- </dependency>
- <!--单元测试-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-test</artifactId>
- </dependency>
- <!--junit4-->
- <dependency>
- <groupId>org.junit.vintage</groupId>
- <artifactId>junit-vintage-engine</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- </dependency>
- </dependencies>
复制代码 application.yaml
- server:
- port: 8896
- spring:
- datasource:
- username: root
- password: root
- url: jdbc:mariadb://local_IP_replace:3306/junit?serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true
- driver-class-name: org.mariadb.jdbc.Driver
复制代码 controller
- @RestController
- @RequestMapping("/ele")
- public class EleController {
- private final IEleService eleService;
- @Autowired
- public EleController(IEleService eleService) {
- this.eleService = eleService;
- }
- @GetMapping(value = "/selectEleById")
- public Result<Object> selectEleById(@RequestParam(value = "orderId") int orderId) {
- Object object = eleService.selectEleById(orderId);
- return Result.success(object);
- }
- @GetMapping(value = "/selectEleByIdAndName")
- public Result<Object> selectEleByIdAndName(
- @RequestParam(value = "id") int id, @RequestParam(value = "name") String name) {
- Object object = eleService.selectEleByIdAndName(id,name);
- return Result.success(object);
- }
- }
复制代码 service
- public interface IEleService {
- Object selectEleById(int orderId);
- Object selectEleByIdAndName(int id, String name);
- }
复制代码- @Service
- public class EleService implements IEleService {
- @Autowired
- private IElementsMapper elementsMapper;
- @Override
- public Object selectEleById(int orderId) {
- ElementsDO elementsDO = elementsMapper.selectById(orderId);
- return elementsDO;
- }
- @Override
- public Object selectEleByIdAndName(int id, String name) {
- LambdaQueryWrapper<ElementsDO> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(ElementsDO::getId, id);
- queryWrapper.eq(ElementsDO::getElementName, name);
- ElementsDO elementsDO = elementsMapper.selectOne(queryWrapper);
- return elementsDO;
- }
- }
复制代码 mapper
- @Mapper
- public interface IElementsMapper extends BaseMapper<ElementsDO> {
- }
复制代码 entity
- @Data
- @Builder
- @NoArgsConstructor
- @AllArgsConstructor
- @EqualsAndHashCode(callSuper = false)
- @TableName("ELEMENTS")
- public class ElementsDO implements Serializable {
- /**
- * id
- */
- @TableId(value = "ID", type = IdType.AUTO)
- private Integer id;
- /**
- * 要素代码
- */
- @TableField(value = "ELEMENT_CODE")
- private String elementCode;
- /**
- * 要素名称
- */
- @TableField(value = "ELEMENT_NAME")
- private String elementName;
- /**
- * 单位
- */
- @TableField(value = "UNIT")
- private String unit;
- }
复制代码 controller返回封装对象
- @JsonInclude(JsonInclude.Include.NON_NULL)
- public class Result<T> {
- private int code;
- private String msg="success";
- private T data;
- /**
- * 成功时候的调用
- * */
- public static <T> Result<T> success() {
- Result<T> result = new Result<T>();
- result.code = 1;
- return result;
- }
- public static<T> Result<T> success(T data){
- return new Result<T>(data);
- }
- /**
- * 失败时候的调用
- * */
- public static <T> Result<T> error(CodeMsg codeMsg){
- return new Result<T>(codeMsg);
- }
- private Result(T data) {
- this.data = data;
- }
- private Result(int code, String msg) {
- this.code = code;
- this.msg = msg;
- }
- private Result() {
- }
- private Result(CodeMsg codeMsg) {
- if(codeMsg != null) {
- this.code = codeMsg.getCode();
- this.msg = codeMsg.getMsg();
- }
- }
- /**
- * BindingResult统一处理
- */
- public static Result resolveBindResult(BindingResult bindingResult){
- StringBuilder stringBuilder = new StringBuilder();
- for (String s : bindingResult.getFieldErrors().stream().map(FieldError::getDefaultMessage).collect(Collectors.toList())) {
- stringBuilder.append(",").append(s);
- }
- return Result.error(new CodeMsg(502,stringBuilder.toString().substring(1)));
- }
- public int getCode() {
- return code;
- }
- public void setCode(int code) {
- this.code = code;
- }
- public String getMsg() {
- return msg;
- }
- public void setMsg(String msg) {
- this.msg = msg;
- }
- public T getData() {
- return data;
- }
- public void setData(T data) {
- this.data = data;
- }
- @Override
- public String toString() {
- return "Result [code=" + code + ", msg=" + msg + ", data=" + data + "]";
- }
- }
复制代码 Mock初始化
方式1
- import org.junit.jupiter.api.Test;
- import org.junit.jupiter.api.extension.ExtendWith;
- import org.mockito.Mock;
- import org.mockito.Mockito;
- import org.mockito.Spy;
- import org.mockito.junit.jupiter.MockitoExtension;
- @ExtendWith(MockitoExtension.class)
- public class Init1 {
- //初始化模拟对象
- @Mock
- private EleService eleService;
- //初始化真实对象
- @Spy
- private EleService eleService2;
- @Test
- public void test1(){
- boolean mock = Mockito.mockingDetails(eleService).isMock();
- System.out.println(mock);
- boolean mock1 = Mockito.mockingDetails(eleService2).isSpy();
- System.out.println(mock1);
- }
- }
复制代码 方式2
- import org.junit.jupiter.api.BeforeEach;
- @ExtendWith(MockitoExtension.class)
- public class Init2 {
- private EleService eleService;
- //初始化
- @BeforeEach
- public void init() {
- eleService = Mockito.mock(EleService.class);
- }
- @Test
- public void test1(){
- //判断对象是否为muck对象
- boolean mock = Mockito.mockingDetails(eleService).isMock();
- System.out.println(mock);
- }
- }
复制代码 方式3
- import org.junit.jupiter.api.BeforeEach;
- @ExtendWith(MockitoExtension.class)
- public class Init3 {
- //初始化模拟对象
- @Mock
- private EleService eleService;
- //初始化真实对象
- @Spy
- private EleService eleService2;
- //初始化
- @BeforeEach
- public void init() {
- //初始化当前类对象下的相关mock
- MockitoAnnotations.openMocks(this);
- }
- @Test
- public void test1(){
- boolean mock = Mockito.mockingDetails(eleService).isMock();
- System.out.println(mock);
- boolean mock1 = Mockito.mockingDetails(eleService2).isSpy();
- System.out.println(mock1);
- }
- }
复制代码 Mock默认返回值
int默认返回0,对象默认返回null,聚集默认返回空聚集(空的ArrayList、空的HashSet、空的HashMap)
- @ExtendWith(MockitoExtension.class)
- public class MockMethod1 {
- //初始化模拟对象
- @Mock
- private EleService eleService;
- @Test
- public void test1(){
- //Mock对象返回默认值,不会调用真正方法
- Object o1 = eleService.selectEleById(1);//null
- System.out.println(o1);
- }
- }
复制代码 Mock参数设置
- @ExtendWith(MockitoExtension.class)
- public class MockMethod1 {
- //初始化模拟对象
- @Mock
- private EleService eleService;
- @Test
- public void test1(){
- /**
- * 插桩,只拦截参数为1
- */
- //指定参数为1时,selectEleById方法时返回new Object()
- Mockito.doReturn(new Object()).when(eleService).selectEleById(1);
- Object o2 = eleService.selectEleById(1);
- System.out.println(o2);//java.lang.Object@16b2bb0c
- }
- @Test
- public void test2(){
- /**
- * 插桩,拦截selectEleById()的任意参数值
- */
- Mockito.doReturn(new Object()).when(eleService).selectEleById(ArgumentMatchers.any(Integer.class));
- Object o2 = eleService.selectEleById(2);
- System.out.println(o2);//java.lang.Object@c7045b9
- }
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |