发表于: 2017-11-11 21:29:01

1 896


今天完成的事情:

       今天因为断网过早,加上搬家一直到晚上12点,所以学的东西不多


junit单元测试的部分:


 测试格式:  

     1.定义一个测试类.

       测试类的名字: XxxTest

     2.在xxxTest.java中编写测试方法:如

       @Test

       public void testXxx() throws Exception {

   }

      注意:方法是public修饰的,没有参数,无返回的,该方法上必须贴有@Test标签,XXX表示测试的功能名字.

      3.选择某一个测试方法,鼠标右键选择 [run as junit],或则选中测试类,表示测试该类中所有的测试方法.

      以后单元测试使用最多的方式:

      若要在测试方法之前做准备操作:

      xxxTest随意定义一个方法并使用@Before标注:

      @Before

      public void xx() throws Exception方法

      若要在测试方法之后做回收操作:

      xxxTest随意定义一个方法并使用@After标注:

      @After

      public void xx() throws Exception方法

      特点:每次执行测试方法之前都会执行Before方法,每次执行测试方法之后都会执行After方法;

  4.只执行一次的before 和 after

     @beforeclass     @afterclass

其中 beforeclass需要定义为静态方法, 因为他在类加载之前就要运行.


断言:

明确需求-->明确你要做的东西是什么功能

知道输出什么会出现什么结果

-------------------------------------

测试的成功与否的判断:

    1):需要使用断言(Assert):所谓断言就是做预测,预测期望的结果和实际的结果是否一致

    2):若断言成功,才测试成功! 断言失败,测试失败.

        测试最后,出现绿条---->断言成功

        出现红条---->断言失败

    如果没有使用断言,那么绿条没有意义.

断言有:期望值,真实值,当真实值和期望值相同则断言成功,否则失败

---------------------------------------------

步骤(基于接口测试):

    1:写一个接口 --> IMath

    2:写一个测试类测试接口中的方法  --> MathTest

    3:写一个实现类实现接口

    4:测试该接口的实现(解释依赖关系)

---------------------------------------------

①:Assert.assertEquals(message, expected, actual):比较的值

    三个参数:

    message:  断言失败的提示信息,断言成功不会显示.

    expected: 期望值

    actual:   真实值

   若真实值和期望值想等,则断言成功.--->绿条

②:Assert.assertSame(message, expected, actual):比较地址,是同一个对象

    Assert.assertNotSame(message, expected, actual):断言不是同一个对象

③:Assert.assertTrue(message, condition):断言condition应该为TRUE.

④:Assert.assertFalse(message, condition):断言condition应该为FALSE.

⑤:Assert.assertNull(message, object):断言对象object为null.

⑥:Assert.assertNotNull(message, object):断言对象object不为null.

⑦:@Test(expected=ArithmeticException.class)

   期望该方法报错,报错ArithmeticException.

自己写一个单元测试:

先定义一个接口,因为单元测试是面向接口测试:


写一个实现类,用以实现接口的方法:


面向接口编程的思路, 所以得先拿到这个接口的对象,然后分别对2个方法进行测试.


JDBC部分:


什么是持久化(persistence):

持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。

大多数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”

而持久化的实现过程大多通过各种数据库来完成。

持久化的主要应用是将内存中的数据存储在数据库中,当然也可以存储在磁盘文件、XML数据文件中。 

JPA:JavaEE的规范,Java persistence api: Java的持久化API. Hibernate实现了该规范.(xml/注解)

----------------------------------------------------------------------------------------------------------

在Java中,数据库存取技术只能通过JDBC访问数据库:

JDBC访问数据库的形式主要有两种:

   1).直接使用JDBC的API去访问数据库服务器(MySQL/Oracle).

   2).间接使用JDBC的API去访问数据库服务器.

      第三方O/R Mapping工具,如Hibernate, MyBatis等.(底层依然是JDBC)

      JDBC是java访问数据库的基石,其他技术都是对jdbc的封装.


JDBC(Java DataBase Connectivity):

    是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。

    JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序.

    JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。

JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。

    总结: JDBC本身是java连接数据库的一个标准,是进行数据库连接的抽象层,由java编写的一组类和接口组成,接口的实现由各个数据库厂商来完成--驱动包.

--------------------------------------------------------------------------------

JDBC的版本:

JDBC隶属于JavaSE的范畴,伴随着JavaSE的版本升级.

Java6开始:JDBC4.0: (了解)JDBC4.0有一个新特性-无需加载注册驱动.

Java7开始:JDBC4.1: RowSetProvider工具类

---------------------------------------------------------------

JDBC的API在哪里----->JDK的API中.

         java.sql包装的就是JDBC的API.

         各大数据库厂商就会对JDBC的API提供实现类.--->驱动包

   注意:在开发中(编写的Java代码),使用到的关于JDBC的类/接口全部引入的是java.sql包/javax.sql包的中的.

千万不要直接使用com.mysql..Xxx类.

面向接口编程:

    JDBC接口 变量 = new MySQL实现();

    变量 = new Oralce实现();

JDBC开发第一步:

拷贝驱动包:

mysql-connector-java-5.1.38-bin.jar   并build path


-----------------------------------------------

获取连接对象:贾琏

1:加载注册驱动

    Class.forName(“com.mysql.jdbc.Driver”);

    ①:在classpath加载com.mysql.jdbc.Driver,并初始化(执行静态代码块)

    ②:由于这份字节码中的静态代码块有注册驱动的代码,因此当类被JVM加载时注册驱动的代码就执行了

2:获取连接对象

   DriverManage中的方法

   Connection getConnection(String url, String user, String password) 

   参数:

   url:jdbc:数据库://主机:端口/数据库名称   ->  jdbc:mysql://localhost:3306/jdbcdemo

   user:用户名   ->  root

   password:密码  ->  admin

验证已经获取连接:可以在MySQL控制台,使用命令:show processlist; 查看MySQL运行进程.

 -------------------------------------------------

从Java6(JDBC4.0)开始,可以不再加载注册驱动.

    直接通过DriverManager获取连接对象.

为啥不再需要加载注册驱动了?

  从Java6开始,规范要求每一个JDBC驱动的包,都必须带有META-INF/services/java.sql.Driver文件.

  程序会自动去META-INF/services/java.sql.Driver下读取驱动的全限定名,此时程序员不再需要去写Class.forName的代码

开发建议:依然还是建议手动的加载注册驱动.  因为在web中这个是必须的.





明天计划的事情:

     继续JDBC的学习




遇到的问题:


自己写的第一个JDBC连接方式连接数据库,中途出现了无法加载驱动的问题,

错误格式:url= "jdbc:mysql//localhost:3306/jnshutask"

 最终发现是在数据库地址格式书写错误

正确格式:url ="jdbc:mysql://localhost:3306/jnshutask"




收获:

知道了单元测试的作用以及重要性, 一个不会写单元测试的程序猿不是一个好画家.



返回列表 返回列表
评论

    分享到