private String id;
/**
- 昵称
*/
private String fullName;
/**
- 用户名
*/
private String userName;
/**
- 密码
*/
private String password;
/**
- 年龄
*/
private Integer age;
/**
- 性别
*/
private String sex;
}
package com.uncle.junittest.mapper;
import com.uncle.junittest.bean.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
/**
-
@author
-
@date 2022-01-27 下午3:30
**/
@Repository
public interface UserMapper {
/**
-
增加用户的方法
-
@param user 用户信息
-
@return 增加成功返回:1;否则返回:0
*/
@Insert(“insert into user values (#{id},#{fullName},#{userName},#{password},#{age},#{sex})”)
int saveUser(User user);
/**
-
根据id查询用户信息
-
@param id 用户id
-
@return 用户信息
*/
@Select(“select * from user where id = #{id}”)
User getUser(String id);
}
package com.uncle.junittest.service;
import com.uncle.junittest.bean.User;
import org.apache.ibatis.annotations.Select;
/**
-
@author
-
@date 2022-01-27 下午3:29
**/
public interface UserService {
/**
-
增加用户的方法
-
@param user 用户信息
-
@return 增加成功返回:1;否则返回:0
*/
int saveUser(User user);
/**
-
根据id查询用户信息
-
@param id 用户id
-
@return 用户信息
*/
User getUser(String id);
}
package com.uncle.junittest.service.impl;
import com.uncle.junittest.bean.User;
import com.uncle.junittest.mapper.UserMapper;
import com.uncle.junittest.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
-
@author
-
@date 2022-01-27 下午3:29
**/
@Service
public class UserServiceImpl implements UserService {
/**
- UserMapper对象
*/
@Autowired
private UserMapper userMapper;
/**
-
增加用户的方法
-
@param user 用户信息
-
@return 增加成功返回:1;否则返回:0
*/
@Override
public int saveUser(User user) { return userMapper.saveUser(user); }
/**
-
根据id查询用户信息
-
@param id 用户id
-
@return 用户信息
*/
@Override
public User getUser(String id) {
return userMapper.getUser(id);
}
}
package com.uncle.junittest.controller;
import com.uncle.junittest.bean.User;
import com.uncle.junittest.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
-
@author
-
@date 2022-01-27 下午3:29
**/
@RequestMapping(“/test”)
@RestController
public class UserController {
/**
- UserService对象
*/
@Autowired
private UserService userService;
/**
-
新增用户
-
@param user User
-
@return String
*/
@PostMapping(“/saveUser”)
public String saveUser(@RequestBody User user) {
int i = userService.saveUser(user);
return i == 1 ? user.toString() : “新增用户失败”;
}
/**
-
获取用户信息
-
@return String
*/
@GetMapping(“/getUser/{id}”)
public String getUser(@PathVariable(value = “id”) String id) {
User user = userService.getUser(id);
return user.toString();
}
}
package com.uncle.junittest;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(“com.uncle.junittest.mapper”)
public class JunitTestApplication {
public static void main(String[] args) {
SpringApplication.run(JunitTestApplication.class, args);
}
}
spring:
datasource:
username: root
password:
url: jdbc:mysql://@rm-2ze44u6e2z7t924t0xo.mysql.rds.aliyuncs.com:3306/
server:
port: 80
mybatis:
configuration:
map-underscore-to-camel-case: true
package com.uncle.junittest.controller;
import com.alibaba.fastjson.JSON;
import com.uncle.junittest.bean.User;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.RequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.LinkedMultiValueMap;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
import static org.junit.jupiter.api.Assertions.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
/**
-
用户测试类
-
@AutoConfigureMockMvc:该注解将会自动配置mockMvc的单元测试
*/
@DisplayName(value = “用户测试类”)
@Slf4j
@AutoConfigureMockMvc
@SpringBootTest
class UserControllerTest {
/**
- 每个单元测试之前都要执行
*/
@BeforeEach
void testBeforeEach() {
log.info(“测试要开始了!”);
}
/**
- 每个单元测试之后都要执行
*/
@AfterEach
void testAfterEach() {
log.info(“测试结束了!”);
}
/**
- 在所有测试之前执行
*/
@BeforeAll
static void testBeforeAll() {
log.info(“要测试所有测试了!”);
}
/**
- 在所有测试之后执行
*/
@AfterAll
static void testAfterAll() {
log.info(“所有测试测试完了!”);
}
/**
- mockmvc
*/
@Autowired
MockMvc mockMvc;
/**
-
新增用户接口测试
-
@Disabled:该注解标识着不需要启动测试
-
@Transactional:事物回滚
*/
@Disabled
@DisplayName(“新增用户接口测试”)
@Transactional
@Test
void saveUser() throws Exception {
// 请求地址
String urlTemplate = “/test/saveUser”;
/* 请求头集合 */
HttpHeaders headers = new HttpHeaders();
headers.add(“header1”, “header1”);
headers.add(“header2”, “header2”);
/* 参数体 */
String uuid = UUID.randomUUID().toString();
User user = new User();
user.setId(“4”);
user.setFullName(“copico”);
user.setUserName(“kebike”);
user.setPassword(“123456”);
user.setAge(19);
user.setSex(“女”);
// 转换成json对象
String jsonString = JSON.toJSONString(user);
// 请求
RequestBuilder request = MockMvcRequestBuilders
// post请求
.post(urlTemplate)
// 数据类型
.contentType(MediaType.APPLICATION_JSON)
// 请求头
.headers(headers)
// 请求体
.content(jsonString);
MvcResult mvcResult = mockMvc.perform(request)
// 打印日志
.andDo(print())
// 获取返回值
.andReturn();
// 从返回值获取状态码
int status = mvcResult.getResponse().getStatus();
//从返回值获取响应的内容
String contentAsString = mvcResult.getResponse().getContentAsString();
// 断言
assertAll(“heading”,
() -> assertEquals(200, status, “保存失败”),
() -> assertEquals(user.toString(), contentAsString, “数据保存失败”));
}
/**
- 获取用户接口测试
*/
@DisplayName(“获取用户接口测试”)
@Test
void getUser() throws Exception {
// 预期结果
User user = new User(“1”,
“小软”,
“neusoft”,
“123456”,null,null);
// 请求地址
String urlTemplate = “/test/getUser/1”;
/* 请求头集合 */
HttpHeaders headers = new HttpHeaders();
headers.add(“headers1”, “headers1”);
headers.add(“headers2”, “headers2”);
LinkedMultiValueMap<String,String> linkedMultiValueMap = new LinkedMultiValueMap();
linkedMultiValueMap.add(“params1”, “params1”);
linkedMultiValueMap.add(“params2”, “params2”);
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-sePOGvar-1713313795922)]
[外链图片转存中…(img-N67XmhZc-1713313795923)]
[外链图片转存中…(img-Ae38oFlW-1713313795923)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化
[外链图片转存中…(img-sulKAbmo-1713313795923)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!