发表于: 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"
收获:
知道了单元测试的作用以及重要性, 一个不会写单元测试的程序猿不是一个好画家.
评论