-
<!-- spring boot start --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <!-- 排除自带的logback依赖 --> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <!-- springboot-log4j --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j</artifactId> </dependency>
package com.beauty.beauty.aspect; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; @Aspect @Component public class HttpAspect { /* @Before("execution(public * com.beauty.beauty.controller.BeautyController.*(..))") public void log(){ System.out.println("Aspect"); } @After("execution(public * com.beauty.beauty.controller.BeautyController.*(..))") public void logAffter(){ System.out.println("Aspect After"); } */ private final static Logger logger=LoggerFactory.getLogger(HttpAspect.class); @Pointcut("execution(public * com.beauty.beauty.controller.BeautyController.*(..))") public void log(){ System.out.println("Aspect public"); } @Before("log()") public void logbefore(){ System.out.println("Aspect Before"); } @After("log()") public void logafter(){ System.out.println("Aspect After"); } // @Before("execution(public * com.beauty.beauty.controller.BeautyController.beutylist(..))") }
查看全部 -
controller测试
查看全部 -
aa查看全部
-
打包跳过单元测试的方法:
mvn clean pacakge --Dmaven.test.skip=true
查看全部 -
Q: 如果写了很多个文件和单元测试,是不是要每个方法都进行右键测试
A:不是,当我们对项目进行打包(mvn clean package)的时候就会对项目进行单元测试(会有日志打出来给我们)
查看全部 -
对controller的一个方法进行测试:
右键方法-go to-Test,然后勾选我们要测试的方法
测试类里面
注解@RunWith(SpringRunner.class)
注解@SpringBootTest
注解@AutoConfigureMockMvc
Autowired MockMvc这个类
在方法里面mvc.perfom的方式并且andExpect:具体看代码
查看全部 -
使用IDEA对service方法进行更加方便的测试:
右键要测试的方法-go to-Test-显示已经有的测试
如果没有就可以创建一个测试,然后会帮忙判断这个类下面所有的方法,勾选自己想要测试的方法即可(这样会在测试目录下面建一个Service对应目录,然后做好基本的测试框架)
查看全部 -
对service进行单元测试
首先在service里面写好方法(记得写好注释)
在test/java/com.imooc下面新建一个GirlServiceTest类
加两个注解:
@RunWith(SpringRunner.class)表示我们要在测试环境里面跑,底层使用的是junit测试工具
@SpringBootTest:表示我们将启动整个spring工程
注入要测试的GirlService:使用@Autowired
在测试的方法上,记得加上@Test注解,
然后在方法里面加使用Service的方法(跟程序里面的调用很像)(唯一不同的是在在类上加了两个注解,然后在方法上加了Test注解)
然后在方法里面加一个断言Assert来测试是否返回结果跟我们想象的相同
启动:文件上右键-Run GirlServiceTest
注意,实现并没有启动工程,在下方框框的顶上可以看到进度条会显示测试通过的标志
而且我们还可以单独Run一个测试方法
查看全部 -
单元测试目标:
service
api
查看全部 -
异常处理(下)总结:
通过在domain定义一个Result类,固定返回的内容格式
在service里面定义GirlService,让逻辑在一个地方处理,另外因为不需要进行返回的处理,所以引入了异常
定义自己的异常GirlException可以除了msg,还可以返回code的字段异常
加一个ExceptionHandle捕获异常的类
将code和msg定义成枚举进行统一管理
查看全部 -
传枚举内容的方式
查看全部 -
将返回错误和msg进行统一管理:enums
查看全部 -
如果不清楚异常具体是在哪里,我们可以在ExceptionHandle里打日志对异常进行记录
查看全部 -
notes:
在service里面面修改了抛出的异常,那么在handle里面捕获的修改捕获异常的方式
查看全部 -
如果是Java自己的exception,只能返回String内容,这样不能够,所以我们实现一个自己的exception
notes:
记得继承的是RuntimeException,Spring框架只对抛出的异常是RuntimeException才会进行对事务的回滚(如果是Exception是不会进行事务回滚的)
在构造方法里面我们自己存一个code,另外由于父类的构造方法肯定会传一个message进来,所以采用super(message)
查看全部
举报