-
<!--?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)
查看全部
舉報