前言
首先我最次要的问题就是心急,对于我的项目任务分配不明确,不可能很好的将当前任务分工,导致每次提交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()); }
总结:
要应用麻利开发(将大的工作一直调配成各个小工作,保障每个小工作最晚当天能够实现)+ 单元测试的办法。