发表于: 2017-08-31 22:18:56

2 1131


一、    今天完成的事情

Q20-21

1.     单元测试

1) 补充一下eclipse配置junit4步骤:进入项目的properties / Java Build Path / Libaries / Add Library / Junit / Next / junit4 / finish / 搞定

2) Junit注解:

@Test:将一个普通方法修饰称为一个测试方法

        @Test(expected=XX.class):预期抛出的异常

        @Test(timeout=毫秒):限定运行时间

@BeforeClass:使被修饰的方法在所有其它方法运行前运行一次,被static修饰

@AfterClass:使被修饰的方法在所有其它方法运行前运行一次,被static修饰

@Before:使被修饰的方法在每一个测试方法运行前运行一次

@Before:使被修饰的方法在每一个测试方法运行后运行一次

@Ignore:使被修饰的测试方法不被执行测试

3) 单元测试代码:使用上一篇日报中springApplicantDao作为被测试接口

测试结果:

4) 单元测试小结:

测试方法必须使用@Test注解修饰;

测试方法必须使用public void修饰,且不带参数;

测试方法放在src/test目录下,且其包名与被测试类包名保持一致;

测试单元中的每个方法必须可以独立测试;

测试类使用Test作为类名后缀,测试方法使用test作为方法名前缀;

5) 扩展:

同时测试类中所有方法:

右键类名/run as/junit

同时测试多个类所有方法:使用测试套件

测试套件是组织多个测试类同时运行的,通过一个不含其他方法的入口类,更改测试运行器Suite.class,将要测试的类作为数组传入到Suite.SuiteClasses({,,,…})

6) 报错示例(区别FailuresErrors)

7) 测试报错小结:

Failure一般由单元测试使用的断言方法判断失败所引起的,表示测试点发现问题,程序输出结果与预期不符;

Error是由代码异常引起的,它可能是测试代码本身的错误,也可能是被测试代码中的bug

摘抄的一句话(半知半解):测试用例不是用来证明你是对的,而是用来证明你没有错

2.     查看日志,并转成Debug模式,练习调试,学会查看单步执行时的变量值。

1)查看Java的日志是通过一个操作包——log4j(log for java)

2log4j 有两个版本,log4jlog4j2。前者使用的是.properties文件作为主配置文件,后者则是通过.xml \ .json \ .jsn 等方式

3)以下我决定分别尝试使用log4jlog4j2

配置log4j:

通过在mavenpom.xml加入以下标签,建立起依赖关系,导入jar

并将log4j.properties文件放在resource路径下面

然后创建一个测试类,编写测试代码:

注:logger是一个日志对象,用于操作日志信息,上图代码中用到的方法分别对应不同日志级别,其中Fatal级别最高,Trace级别最低

Fatal:重大错误,最高级别。

Error:错误信息。

Warn:警告信息。

Info:输出感兴趣的或重要的信息

Debug:调试信息。

Trace:追踪信息,最低级别,一般不用,不然信息量太大。

接着我们查看一下运行结果:

发现只有INFO级别以上的信息,这是怎么回事?

我们可以通过解析上文提到log4j.properties的配置文件,查明原因。

在文件第2行发现这一语句:

意思允许INFO级别以上的日志信息写到stdoutfile

那么stdoutfile是什么?

在第5行和第11行发现了定义了这两个“追加器”:

显然,对于只输出INFO级别以上信息的原因已经查明。

继续解析其它语句:

Stdout的目标是system.out这个类

设置信息的输出格式

设置file在执行目录下创建文件并存储日志信息

允许新的日志信息追加写入文件

文件最大容量为100KB

配置log4j2:

依旧通过maven搭建对log4j2的依赖关系:

测试类代码类似Log4jTest,故此跳过

解析log4j2.xml文件,由于文件内容比较多,我直接注释在文件中:

执行结果:项目根目录下多个两个文件夹,用于存储日志信息

 

最后,个人理解log4j就是输出语句(System.out.print)的增强

Debug模式练习:

设断点——》点击Debug xxx,开始调试

Step into:执行下一步,遇到方法时会进入方法。

Step over:执行下一步,遇到方法会跳过方法

Step return:跳出方法,或者说终止方法

3.     Q22服务部分

1) 购买云服务器(我选了阿里云),然后esc远程连接

2) 本地下载Xshell5.0,远程连接,步骤参考阿里云https://help.aliyun.com/video_detail/41677.html

3) 待续。。。

4.     补充:JDBC连接数据库

代码如下:

 

注意:

步骤6中结果集query不能在没有query.next()方法的判断下直接取值。否则会抛出异常:java.sql.SQLException: Before start of result set

扩展:通过c3p0连接池连接数据库

c3p0Hibernatespring底层所使用的连接池

只需要更换通过jdbc连接的前两步骤,代码如下:

注:ds自动读取src目录下的c3p0.properties配置文件(展示如下)

二、    明天计划的事情

完成到Q23,学习linux命令,emmmmm……总是不能按计划完成

三、    遇到的问题

1)        镜像是什么鬼?刚刚听师兄说到,买服务器的时候也有,自己百度了好久,结论,看不懂,好抽象。

2)        “部署数据库到远程DB”这句话的意思是将sql文件发过去吗?还是什么?

3)        感觉云服务器这块好难,有点摸不着头绪

四、    收获

1)        junit的使用(像注解、断言、测试套件等)

2)        log4j的使用



返回列表 返回列表
评论

    分享到