Java学习十四
学习内容:
1.Junit
2.maven安装配置环境
一、Junit实例演示步骤
1.引入jar包

junit包需要引入hamcrest-core包,否则会报错
2.测试如下代码
package com.junit.test;
public class Calculator {
private static int result; //静态变量,用于存储运行结果
public void add(int n){
result=result+n;
}
public void substract(int n){
result=result-1; //Bug:正确的应该是result=result-n
}
public void multiply(int n){
}//此方法尚未写好
public void divide(int n)throws Exception{
if(n==0)
throw new Exception("除数不能为0");
result=result/n;
}
public void square(int n){
result=n*n;
}
public void squareRoot(int n){
for(;;); //Bug:死循环
}
public void clear(){ //将结果清零
result=0;
}
}
3.进行单元测试
点击测试项目,点击新建JUnit Test Case

选择测试方法

演示代码
package com.junit.test; import static org.junit.Assert.*; import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test; public class CalculatorTest { public static Calculator c = new Calculator();
@Before
public void setUp() throws Exception {
} @Test
public void testAdd() {
c.add(2);
c.add(2);
assertEquals(4,c.getResult());
} @Test
public void testSubstract() {
c.substract(2);
assertEquals(2,c.getResult());
} @Ignore
public void testMultiply() {
c.multiply(10);
} @Test(expected = Exception.class)
public void testDivide() throws Exception {
c.divide(0);
} @Test(timeout = 1000)
public void testSquareRoot() {
c.squareRoot(9);
} }
演示结果

其中将multiply方式用ignore注解忽略到了
另外一个测试代码演示带有数据库
待测试的项目:
package com.junit.test; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map; public class Demo {
Connection conn=null;
public static void main(String[] args){
//运行之前需要创建数据库和表格,参考test1.sql文件
Demo d=new Demo();
Map param=new HashMap();
param.put("id",5);
param.put("name","amy");
param.put("password","123456");
d.insert(param);
d.getAll();
d.close();
}
public void createDb(){
String url="jdbc:mysql://localhost:3306/test1";
String name="com.mysql.jdbc.Driver";
String user="root";
String password="root";
try {
Class.forName(name);//指定连接类型
conn = DriverManager.getConnection(url, user,password);
System.out.println("连接成功");
//pst=conn.prepareStatement(sql);//准备执行语句
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch(SQLException e){
e.printStackTrace();
}
} public int insert(Map param){
this.createDb();
int i=0;
String sql="INSERT INTO user(id,username,password) VALUES(?,?,?)";
PreparedStatement pstmt;
try{
pstmt=this.conn.prepareStatement(sql);
pstmt.setString(1,(String)param.get("id"));
pstmt.setString(2,(String)param.get("name"));
pstmt.setString(3,(String)param.get("password"));
i=pstmt.executeUpdate();
pstmt.close();
}catch(SQLException e){
e.printStackTrace();
} return i;
}
public void getAll(){
String sql="select * from user";
PreparedStatement pstmt=null;
try{
pstmt=this.conn.prepareStatement(sql);
ResultSet rs=pstmt.executeQuery();
int col=rs.getMetaData().getColumnCount();
System.out.println("=========================");
while(rs.next()){
for(int i=1;i<=col;i++){
System.out.print(rs.getString(i)+"\t");
if((i==2)&&(rs.getString(i).length()<8)){
System.out.print("\t");
}
}
System.out.println("");
}
System.out.println("========================="); }catch(Exception e){
e.printStackTrace();
}
}
public void close(){
}
}
测试代码
package com.junit.test; import static org.junit.Assert.*; import java.util.HashMap;
import java.util.Map; import org.junit.After;
import org.junit.Before;
import org.junit.Test; public class DemoTest { public static Demo d = new Demo(); @Before
public void setUp() throws Exception {
} @Before
public void testCreateDb() {
d.createDb();
} @Test
public void testInsert() {
Map param=new HashMap();
param.put("id","2");
param.put("name","amy");
param.put("password","123456");
d.insert(param);
} @Test
public void testGetAll() {
d.getAll();
} @After
public void testClose() {
d.close();
} }
测试结果

打包所有要测试的类
package com.junit.test; import org.junit.runner.RunWith;
import org.junit.runners.Suite; @RunWith(Suite.class)
@Suite.SuiteClasses({
CalculatorTest.class,
DemoTest.class
}) public class TestAllForJunit { }
maven
之前已经安装配置过maven,今天算是重温一下。
maven的几个命令
mvn compile 编译
mvn install 编译,运行和发布
mvn package 编译,运行不负责发布,也就是package命令不会将target内容发布到本地仓库
mvn test 编译,如果你test包下面有相关Java也编译和运行,但是也一样不会发布到本地仓库中
mvn clean 清除
明天就是2.1了,年也过了,不管考研结果怎么样,也要好好准备了。
从明天起,每天6小时学习时间(其实也不多~)一点点加吧
还有背单词!奥利给~
Java学习十四的更多相关文章
- “全栈2019”Java第九十四章:局部内部类详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第十四章:二进制、八进制、十六进制
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第二十四章:流程控制语句中决策语句switch下篇
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 从.Net到Java学习第四篇——spring boot+redis
从.Net到Java学习系列目录 “学习java已经十天,有时也怀念当初.net的经典,让这语言将你我相连,怀念你......”接上一篇,本篇使用到的框架redis.FastJSON. 环境准备 安装 ...
- Scala学习十四——模式匹配和样例类
一.本章要点 match表达式是更好的switch,不会有意外调入下一个分支 如果没有模式能够匹配,会抛出MatchError,可以用case _模式避免 模式可以包含一个随意定义的条件,称做守卫 你 ...
- 强化学习(十四) Actor-Critic
在强化学习(十三) 策略梯度(Policy Gradient)中,我们讲到了基于策略(Policy Based)的强化学习方法的基本思路,并讨论了蒙特卡罗策略梯度reinforce算法.但是由于该算法 ...
- java学习(四)
学号 20189214 <Java程序设计>第四周学习总结 教材学习内容总结 枚举 枚举是JDK1.5版本新增的特性(泛型.For-each等如今被广泛应用的特性也是由JDK1.5时所新增 ...
- 系统学习 Java IO (十四)----字符读写缓存和回退 BufferedReader/BufferedWriter & PushbackReader
目录:系统学习 Java IO---- 目录,概览 BufferedReader BufferedReader 类构造器接收一个 Reader 对象,为 Reader 实例提供缓冲. 缓冲可以加快 I ...
- Java开发学习(十四)----Spring整合Mybatis及Junit
一.Spring整合Mybatis思路分析 1.1 环境准备 步骤1:准备数据库表 Mybatis是来操作数据库表,所以先创建一个数据库及表 create database spring_db cha ...
随机推荐
- 吴裕雄--天生自然java开发常用类库学习笔记:NumberFormat
import java.text.* ; public class NumberFormatDemo01{ public static void main(String args[]){ Number ...
- (九)微信小程序---for指令
对于数据是列表 wxml <view wx:for="{{dataList}}">{{index}}-{{item}}</view> 我们可以看到上面的代码 ...
- S7-300定时器使用总结
以后 规定我写博客 标题 全部采用 黄色第 加粗的黑色字体. S7-300 一共5种定时器 5种定时器线圈 S7-300的SIMATIC定时器的个数为(128~2028个)与CPU的型号有关, 定时器 ...
- P1006 换个格式输出整数
这道题相较于上一题来说就简单了许多.看题. 怎么感觉这道题有点类似P1002写出这个数.流程差不多,思路大致是先求出每一位上的数,然后根据 百十个 的顺序输出结果.题目比较简单,不做赘述,贴代码 代码 ...
- sqlite if not exists应用实例
INSERT or replace INTO [main].[RecordInfo]([WorkID],[bArtificialAttendance],[fThreshold],[Attendance ...
- nginx location语法解释
1.没有修饰符 表示:必须以指定模式开始,如: 默认模式 server { server_name baidu.com; location /abc { …… } } htt ...
- 【转】R函数-diag()函数
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/lili_wuwu/article/det ...
- read和write函数的使用
https://blog.csdn.net/qq_33883085/article/details/88667003
- 【SQL必知必会笔记(2)】检索数据、排序检索数据
上个笔记中介绍了一些关于数据库.SQL的基础知识,并且创建我们后续练习所需的数据库.表以及表之间的关系,从本文开始进入我们的正题:SQL语句的练习. 文章目录 1.检索数据(SELECT语句) 1.1 ...
- 3. SSH 服务器安装
1.查看SSH是否安装(检查是否装了SSH包) 输入命令:rpm -qa | grep ssh 2.安装SSH 服务 yum install openssh-server 3.查看SSH服务是否正在运 ...