发表于: 2017-05-02 21:02:35
2 1764
昨天因为其他事中断了一天日报……
今日目标:
- 18.学习Junit,并尝试写自己的第一个单元测试,记着要写在自己的src/main/test下。
创建完项目之后,src/main/test已经被自动创建了, 甚至下面还有一个预置的apptest.java……
产生一个疑问:
看到的其他教程中导入的包都不一样……
有的是http://wiki.jikexueyuan.com/project/junit/basic-usage.html的
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
还有http://www.jianshu.com/p/7088822e21a3的
import org.junit.Test;
import static org.junit.Assert.*;
以及项目中预置的测试类,导入的包则是
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
另外,对是否extends TestCase这个类也说法不一。
因为对jUnit暂时不了解,暂时对项目中预置的测试类进行修改。
尝试按照http://www.jianshu.com/p/7088822e21a3中的demo,自己写了一个单元测试。
待测类:
public class Math {
/**
* 阶乘
* @param n
* @return
*/
public int factorial(int n) throws Exception {
if (n < 0) {
throw new Exception("负数没有阶乘");
} else if (n <= 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
}
测试方法:
public void testApp() throws Exception
{
assertEquals(121, new Math().factorial(5));
}
由于是小型测试,只在testApp类中写上要测试的东西。
具体写法是将要测试的方法所在的类实例化,并且将该方法及其需要的值,以及该方法的返回值作为参数,写进assertEquals()方法中。(Assert 类还有其他方法,只举个栗子)
在测试中,发现flag =ps.execute();执行之后,flag一直是false,仔细阅读了该类的文档之后了解到:
Returns:true if the first result is a ResultSet object; false if the first result is an update count or there is no result
execute可以执行查询语句,然后通过getResultSet,把结果集取出来
executeUpdate不能执行查询语句
execute返回boolean类型,true表示执行的是查询语句,false表示执行的是insert,delete,update等等
executeUpdate返回的是int,表示有多少条数据受到了影响
之前一直这个boolean返回值是语句执行是否成功来着……
- 19.学习Spring,配置Spring和Junit
在Eclipse中利用Maven的依赖管理功能添加Spring依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.1.RELEASE</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.1.RELEASE</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.3.1.RELEASE</version>
<type>jar</type>
</dependency>
将这段加入了pom.xml关于依赖的部分。
个人对Spring理解:
IOC/DI:
就是将new对象的流程,从调用构造函数并传递参数,变成调用Spring的context.getBean()方法,并且传入一个字符串作为参数。
Spring会去XML中,根据这个字符串去获取XML的一小节,然后根据那一节的内容,去构造一个预置了指定属性名、属性值(当某个属性是对象的时候,使用ref来预置)的对象。
值得注意的是,xml配置文件中<bean>标签的id属性和name属性基本上没有什么区别,但是使用id会更加符合规范,因为xml中id要求是唯一的。
注解方式IOC:
添加<context:annotation-config/>后,在bean的属性值/Setter方法前,加@Autowired注解,或者@Resource(name="另一个对象名")的注解。
可以用@Component注解表明这是一个bean(需要在bean内预置bean的属性的初始值)。
【之前不能理解为什么要这么做,因为看起来在xml里写属性值、属性,并不比new对象来的轻松。在之后的学习中发现,AOP必须用IOC实现。】
AOP:
就是将某些复用性高、不影响主要业务逻辑(没有它们也可以运行)的功能提取出来,由Spring在需要的地方插进去。
【明天试试具体实现】
- 20.编写单元测试的代码,注意,你也可以尝试一下,先写单元测试的代码,再写接口,再写实现类。
- 21.查看日志,并转成Debug模式,练习调试,学会查看单步执行时的变量值。
- 22.买一台服务器,阿里云或者是金山云都可以。部署数据库到远程DB,从本地直接连远程。
- 23.将部署自己服务到服务器上,包括Maven,Mysql客户端等。直接用Maven命令跑单元测试。
- 24.直接执行Main方法,去在服务器上跑通流程。
- 25.测试一下不关闭连接池的时候,在Main函数里写1000个循环调用会出现什么情况。
- 26.测试一下连接DB中断后TryCatch是否能正常处理。
- 27.检查一下自己的代码是否符合规范,如果DB的表格有改动,应该改哪些内容,需要多久。
- 28.数据库里插入100万条数据,对比建索引和不建索引的效率查别。再插入3000万条数据,然后是2亿条,别说话,用心去感受数据库的性能。
- 29.将自己的收获和经验总结,写在日报里,标明是任务小结,写的好的话,可能会被采纳当成任务攻略。
遇到的问题:
暂无
- 收获:
- 复习了statement、preparedstatement的用法,初步掌握jUnit的使用,更熟悉了利用Maven添加依赖的步骤。
- 初步理解了Spring的工作方式。
评论