发表于: 2017-05-02 21:02:35

2 1759


昨天因为其他事中断了一天日报……


今日目标:

  • 18.学习Junit,并尝试写自己的第一个单元测试,记着要写在自己的src/main/test下。
创建完项目之后,src/main/test已经被自动创建了, 甚至下面还有一个预置的apptest.java……

产生一个疑问:

看到的其他教程中导入的包都不一样……

有的是http://wiki.jikexueyuan.com/project/junit/basic-usage.html的

  1. import org.junit.runner.JUnitCore;
  2. import org.junit.runner.Result;
  3. import org.junit.runner.notification.Failure;

还有http://www.jianshu.com/p/7088822e21a3的

  1. import org.junit.Test;
  2. import static org.junit.Assert.*;

以及项目中预置的测试类,导入的包则是

  1. import junit.framework.Test;
  2. import junit.framework.TestCase;
  3. import junit.framework.TestSuite;

另外,对是否extends TestCase这个类也说法不一。

因为对jUnit暂时不了解,暂时对项目中预置的测试类进行修改。

尝试按照http://www.jianshu.com/p/7088822e21a3中的demo,自己写了一个单元测试。

待测类:

  1. public class Math {
  2.    /**
  3.     * 阶乘
  4.     * @param n
  5.     * @return
  6.     */
  7.    public int factorial(int n) throws Exception {
  8.        if (n < 0) {
  9.            throw new Exception("负数没有阶乘");
  10.        } else if (n <= 1) {
  11.            return 1;
  12.        } else {
  13.            return n * factorial(n - 1);
  14.        }
  15.    }
  16. }

测试方法:

  1.    public void testApp() throws Exception
  2.    {
  3.        assertEquals(121, new Math().factorial(5));
  4.    }
对jUnit的理解:

由于是小型测试,只在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依赖:

  1. <dependency>
  2.        <groupId>org.springframework</groupId>
  3.        <artifactId>spring-context</artifactId>
  4.        <version>4.3.1.RELEASE</version>
  5.    </dependency>
  6.     <dependency>  
  7.            <groupId>org.springframework</groupId>  
  8.            <artifactId>spring-beans</artifactId>  
  9.            <version>4.3.1.RELEASE</version>  
  10.            <type>jar</type>  
  11.        </dependency>  
  12.        <dependency>  
  13.            <groupId>org.springframework</groupId>  
  14.            <artifactId>spring-webmvc</artifactId>  
  15.            <version>4.3.1.RELEASE</version>  
  16.            <type>jar</type>  
  17.        </dependency>  
  18.        <dependency>  
  19.            <groupId>org.springframework</groupId>  
  20.            <artifactId>spring-orm</artifactId>  
  21.            <version>4.3.1.RELEASE</version>  
  22.            <type>jar</type>  
  23.        </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.编写单元测试的代码,注意,你也可以尝试一下,先写单元测试的代码,再写接口,再写实现类。
这个任务指的应该是,编写对数据库crud进行单元测试的代码吧?如果是的话已经完成了……
  • 21.查看日志,并转成Debug模式,练习调试,学会查看单步执行时的变量值。
找到一篇文章,也练习了对程序的调试。http://www.cnblogs.com/binyue/p/3324524.html


明日目标:

  • 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的工作方式。



返回列表 返回列表
评论

    分享到