前言

首先我最次要的问题就是心急,对于我的项目任务分配不明确,不可能很好的将当前任务分工,导致每次提交pr代码量绝对比拟大,不仅减少本人的出错概率和测试难度,同时也给其余的合作成员带来很大的难度。

实例

以用户登录后盾为例,在曾经跳过很多坑的状况下,第二次再去弄用户登录的后盾,本认为能够很好的解决,然而没有很好的将代码分块,导致代码量比拟大,同时在进行单元测试的时候,遇到了很多问题。

单元测试

万物开头难,对于我来说,起初我是很恶感单元测试的,我不得不抵赖它对于团队合作的微小益处,然而因为锤炼比拟少,每次测试时候总是不违心用这种形式进行测试。在这里也感激潘老师的督促,可能让本人静下心来去理解单元测试每个代码的意思。上面我将用一个具体的单元测试进行举例:

@Test  void login() throws UnsupportedEncodingException {    // 复制老我的项目的,用于增加正文    // 结构申请url    String url = "http://localhost:" + port + "/user/login";    // 因为spring boot不提供主动配置的RestTemplate bean,他会提供一个restTemplateBuilder bean    // 可用于在须要的时候创立RestTemplate实例。    // restTemplate用于发动申请,其中exchange能够指定申请办法    RestTemplate restTemplate = this.restTemplateBuilder.build();    // 结构一个申请的headers    HttpHeaders headers = this.getChromeHeaders();    // 没有认证信息时401    // 预言发动申请抛出的异样为HttpClientErrorException。    Assertions.assertThrows(HttpClientErrorException.class, () -> restTemplate.getForObject(url, JSONObject.class));    try {      // HttpEntity包含申请头和申请主体      HttpEntity entity = new HttpEntity(headers);      // 调用exchange办法发动method为get,url为xxx,申请头和申请主体为entity,返回类型为User实体的      restTemplate.exchange(url, HttpMethod.GET, entity, User.class);    } catch (HttpClientErrorException e) {      // 捕捉异样为401,未认证      Assertions.assertEquals(e.getStatusCode().value(), HttpStatus.UNAUTHORIZED.value());    }    // basic认证模式,结构前台传送信息,    headers = this.getChromeHeaders();    // 增加认证信息    String auth = Base64.getEncoder().encodeToString(            (appProperties.getUsername() + ":" + appProperties.getPassword()).getBytes("utf-8"));    headers.add("Authorization", "Basic " + auth);    // 结构一个申请信息,申请头为headers内容    HttpEntity entity = new HttpEntity(headers);    // 获取响应实体,通过get申请    ResponseEntity<User> result = restTemplate.exchange(url, HttpMethod.GET, entity, User.class);    // 从响应头中获取参数x-auth-token,并断言非空(后盾响应之后返回了token)    String xAuthToken = result.getHeaders().get("x-auth-token").get(0);    Assertions.assertNotNull(xAuthToken);    // 获取响应主体,断言它的用户名等于xxx    User body = result.getBody();    Assertions.assertEquals(appProperties.getUsername(), body.getUsername());    // x-auth-token认证    // 第一次申请调配了一个token,第二次申请间接应用调配的token    headers = this.getChromeHeaders();    headers.add("x-auth-token", xAuthToken);    // 获取完判断取得的user是之前的user。    User user = restTemplate.exchange(url, HttpMethod.GET, entity, User.class).getBody();    Assertions.assertEquals(UserInit.username, user.getUsername());  }

总结:

要应用麻利开发(将大的工作一直调配成各个小工作,保障每个小工作最晚当天能够实现)+ 单元测试的办法。