单元测试和日志技术
1.Junit使用的基本流程
<1>將junit的jar包導(dǎo)入到工程中
<2>編寫測(cè)試方法該測(cè)試方法必須是公共的無(wú)參數(shù)無(wú)返回值的非靜態(tài)方法在測(cè)試方法上使用@Test注解標(biāo)注該方法是一個(gè)測(cè)試方法
<3>選中測(cè)試方法右鍵通過(guò)junit運(yùn)行該方法
Junit點(diǎn)擊下載
2.Junit常用的三個(gè)注解
測(cè)試注解【沒(méi)有參數(shù)和返回值,要想測(cè)試返回值,則用該方法調(diào)用返回值方法即可】
@Before【Before運(yùn)行在Test之前】
@Test【有兩個(gè)則會(huì)執(zhí)行兩遍】
@After【After運(yùn)行在Test之后】
3.Assert.assertEquals[斷言、斷點(diǎn)方法]
public class Demo1 {@Test//測(cè)試注解[沒(méi)有參數(shù)和返回值] 有兩個(gè)則會(huì)執(zhí)行兩遍public void sum() {System.out.println("Test執(zhí)行");int sum = 10 + 20;//斷言:測(cè)試結(jié)果和預(yù)期值是否一致Assert.assertEquals(sum,40);}@Before//測(cè)試注解[沒(méi)有參數(shù)和返回值]public void before() {System.out.println("Before運(yùn)行在Test之前");}@After//測(cè)試注解[沒(méi)有參數(shù)和返回值]public void after() {System.out.println("After運(yùn)行在Test之后");} }運(yùn)行結(jié)果: ----------------------------------------------------- Before運(yùn)行在Test之前 Test執(zhí)行 After運(yùn)行在Test之后java.lang.AssertionError: Expected :30 Actual :404.Log4j設(shè)置日志
設(shè)置代碼
public class Demo1 {//使用log4j的api來(lái)獲取日志的對(duì)象//弊端:如果以后我們更換日志的實(shí)現(xiàn)類,那么下面的代碼就需要跟著改//不推薦使用//private static final org.apache.log4j.Logger LOGGER = org.apache.log4j.Logger.getLogger(Demo1.class);//使用slf4j里面的api來(lái)獲取日志的對(duì)象//好處:如果以后我們更換日志的實(shí)現(xiàn)類,那么下面的代碼不需要跟著修改//推薦使用public static final Logger LOGGER = LoggerFactory.getLogger(Demo1.class);public static void main(String[] args) {//1.導(dǎo)入jar包//2.編寫配置文件//3.在代碼中獲取日志的對(duì)象//Logger logger = LoggerFactory.getLogger(Demo1.class);// 4.按照日志級(jí)別設(shè)置日志信息/* LOGGER.debug("Debug級(jí)別的日志");LOGGER.info("info級(jí)別的日志");LOGGER.warn("warn級(jí)別的日志");LOGGER.error("error級(jí)別的日志");*/Scanner sc = new Scanner(System.in);System.out.println("輸入一個(gè)整數(shù)");String number = sc.nextLine();//類型轉(zhuǎn)換try {int result = Integer.parseInt(number);LOGGER.info("類型轉(zhuǎn)換成功"+ result);}catch (NumberFormatException e){LOGGER.info("類型轉(zhuǎn)換失敗,請(qǐng)錄入一個(gè)整數(shù)");}} }//配置文件 log4j.rootLogger=INFO,my,fileAppender #日志級(jí)別:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定義的級(jí)別。 從左往右依次降低,默認(rèn)是info 不會(huì)輸出debug 和 all### direct log messages to my ### # 往控制臺(tái)輸出 log4j.appender.my=org.apache.log4j.ConsoleAppender # 立即刷新 log4j.appender.my.ImmediateFlush = true # 打印流 log4j.appender.my.Target=System.err # 日志輸出模式可以靈活指定 log4j.appender.my.layout=org.apache.log4j.PatternLayout # 日志輸出模式細(xì)節(jié) log4j.appender.my.layout.ConversionPattern=%d %t %5p %c{1}:%L - %m%n# 往文件輸出 log4j.appender.fileAppender=org.apache.log4j.FileAppender # 立即刷新 log4j.appender.fileAppender.ImmediateFlush = true # 消息追加到文件中,不被覆蓋 log4j.appender.fileAppender.Append=true # 消息輸出到指定文件中 log4j.appender.fileAppender.File=D:/log4j-log/log4j-log.log # 日志輸出模式可以靈活指定 log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout # 日志輸出模式細(xì)節(jié) log4j.appender.fileAppender.layout.ConversionPattern=%d %5p %c{1}:%L - %m%n打印結(jié)果: ------------------------------------------------------ 輸入一個(gè)整數(shù) 20.5 2021-07-17 14:49:28,605 main INFO Demo1:35 - 類型轉(zhuǎn)換失敗,請(qǐng)錄入一個(gè)整數(shù)配置文件圖解:
Log4J點(diǎn)擊下載
總結(jié)
- 上一篇: 反射和配置文件的实际应用
- 下一篇: ddos攻击的应对方式有哪些(ddos攻