android junit log4j,log4j日志记录及单元测试

日志记录工具log4j

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIXSyslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

1.配置log4j.properties文件,将配置文件导入项目的src目录下。

### 设置Logger输出级别和输出目的地 ###

log4j.rootLogger=debug, stdout,logfile

### 把日志信息输出到控制台 ###

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.Target=System.err

log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

### 把日志信息输出到文件:jbit.log ###

log4j.appender.logfile=org.apache.log4j.FileAppender

log4j.appender.logfile.File=jbit.log

log4j.appender.logfile.layout=org.apache.log4j.PatternLayout

log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %l %F %p %m%n

2.导入log4j.jar包,创建Logger对象。

1.JUnit是一种测试代码的框架,测试的目的是:保证代码没错,而不是保证代码正确。

2.测试类一般不要和目标类放在一起,但编译成的class文件是放在一起的。

3.单元测试主要是来测试程序的结果和自己期望的值是否相等

PS:Logger对象导的包位于org.apache.log4j.Logger下

Logger logger=Logger.getLogger(当前类名.class);

3.指定输出级别

logger对象输出级别,以下是从高到底

1.error      输出错误信息

2.warn      输出警告信息

3.info

4.debug   控制台输出

如果高级别的先输出,后面的低级别就不会输出。比如说使用了info输出,后面的debug内容将不会被输出。

单元测试

当我们在开发过程中,可能设计到很多类,类中又有很多方法。而且在团队开发中,你写的方法是否存在bug,我要我们逐一测试,才能供其他小伙伴使用。不可能把一个个方法都写在main方法中进行测试吧,这样效率比较低。因此,我们引入单元测试这一概念。顾名思义,单元测试就是对某一个单元(方法)进行测试。

1.引入JUnit包,才能使用相关的工具

1.JUnit是一种测试代码的框架,测试的目的是:保证代码没错,而不是保证代码正确。

2.测试类一般不要和目标类放在一起,但编译成的class文件是放在一起的。

3.单元测试主要是来测试程序的结果和自己期望的值是否相等

2.单元测试用到的一些方法标记

@Test(timeout=1000) :设置超时时间,如果测试时间超过了你定义的timeout,测试失败

@Test(expected) : 申明出会发生的异常,比如@Test(expected = Exception.class)

@Before : 跟junit3.8 上的setUp() 方法同样的效果,方法名最好和setUp()一样,但不强求,在每一个测试方法之前被执行

@After : 跟junit3.8 上的tearDown() 方法同样的效果,方法名最好和tearDown()一样,但不强求,在每一个测试方法之后被执行

@BeforeClass : 被该注解申明的方法,功能是:在所有的测试方法之前执行,只执行一次

@AfterClass : 被该注解申明的方法,功能是:在所有的测试方法之后执行,只执行一次

@Ignore :让 测试方法 或 测试类 不被执行,让其失去测试的功能

log4j和单元测试的一个简单使用

需求:定义一个方法,用单元测试去执行它,并且记录该方法所执行的时间。用log4j写入执行时间,以及相关信息。

package Demo;

import org.apache.log4j.Logger;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

public class TestLogger {

private Logger logger = Logger.getLogger(TestLogger.class);//创建Logger对象

private long time;//记录时间

//测试方法

@Test

public void show(){

for(int i=0;i<100;i++)

System.out.println(i+1);

logger.info("循环一百遍");//写入到日志中

}

@Test

public void print(){

int num=0;

for(int i=1;i<=1000;++i)

num=num+i;

System.out.println("1000以内的整数和:"+num);

logger.info("一百以内的整数和:"+num);

}

//在每个方法执行前获得一次时间

@Before

public void before(){

time=System.currentTimeMillis();//获得方法执行前的时间

}

//在每个方法执行后 获得一次时间,并作差 就得到了 方法运行的时间差

@After

public void after(){

time=System.currentTimeMillis()-time;

System.out.println("时间:"+time);

logger.info("时间:"+time);

}

}

运行结果:

控制台

888f65ad5c11c48f7830ecde8b46087c.png

jbit.log文件

df9c4b6af6f0e9571bf536c8d1e1dd28.png

总结:log4j日志记录,可以记录跟踪捕捉项目中出现的一些问题,方便我们后期的维护与修改。单元测试则可以在没有main方法的前期下,对指定的方法进行测试,提高了测试的效率。

每日鸡汤:世界上一切不公平都是当事人能力不足造成的!

Over!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值