Java学习十四

学习内容:

1.Junit



一、Junit实例演示步骤

1.引入jar包

junit包需要引入hamcrest-core包,否则会报错

2.测试如下代码

 1 package com.junit.test;
 2
 3 public class Calculator {
 4     private static int result; //静态变量,用于存储运行结果
 5     public void add(int n){
 6         result=result+n;
 7     }
 8     public void substract(int n){
 9         result=result-1; //Bug:正确的应该是result=result-n
10     }
11     public void multiply(int n){
12
13     }//此方法尚未写好
14     public void divide(int n)throws Exception{
15         if(n==0)
16             throw new Exception("除数不能为0");
17         result=result/n;
18     }
19     public void square(int n){
20         result=n*n;
21     }
22     public void squareRoot(int   n){
23         for(;;);         //Bug:死循环
24     }
25     public void clear(){  //将结果清零
26         result=0;
27     }
28 }

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注解忽略到了



另外一个测试代码演示带有数据库

待测试的项目:

 1 package com.junit.test;
 2
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.PreparedStatement;
 6 import java.sql.ResultSet;
 7 import java.sql.SQLException;
 8 import java.util.HashMap;
 9 import java.util.Map;
10
11 public class Demo {
12     Connection conn=null;
13     public static void main(String[] args){
14         //运行之前需要创建数据库和表格,参考test1.sql文件
15         Demo d=new Demo();
16         Map param=new HashMap();
17         param.put("id",5);
18         param.put("name","amy");
19         param.put("password","123456");
20         d.insert(param);
21         d.getAll();
22         d.close();
23     }
24     public void createDb(){
25         String url="jdbc:mysql://localhost:3306/test1";
26         String name="com.mysql.jdbc.Driver";
27         String user="root";
28         String password="root";
29         try {
30             Class.forName(name);//指定连接类型
31              conn = DriverManager.getConnection(url, user,password);
32              System.out.println("连接成功");
33              //pst=conn.prepareStatement(sql);//准备执行语句
34         } catch (ClassNotFoundException e) {
35             // TODO Auto-generated catch block
36             e.printStackTrace();
37         } catch(SQLException e){
38             e.printStackTrace();
39         }
40     }
41
42     public int insert(Map param){
43         this.createDb();
44         int i=0;
45         String sql="INSERT INTO user(id,username,password) VALUES(?,?,?)";
46         PreparedStatement pstmt;
47         try{
48             pstmt=this.conn.prepareStatement(sql);
49             pstmt.setString(1,(String)param.get("id"));
50             pstmt.setString(2,(String)param.get("name"));
51             pstmt.setString(3,(String)param.get("password"));
52             i=pstmt.executeUpdate();
53             pstmt.close();
54         }catch(SQLException e){
55             e.printStackTrace();
56         }
57
58         return i;
59     }
60     public void getAll(){
61         String sql="select * from user";
62         PreparedStatement pstmt=null;
63         try{
64             pstmt=this.conn.prepareStatement(sql);
65             ResultSet rs=pstmt.executeQuery();
66             int col=rs.getMetaData().getColumnCount();
67             System.out.println("=========================");
68             while(rs.next()){
69                 for(int i=1;i<=col;i++){
70                     System.out.print(rs.getString(i)+"\t");
71                     if((i==2)&&(rs.getString(i).length()<8)){
72                         System.out.print("\t");
73                     }
74                 }
75                 System.out.println("");
76             }
77             System.out.println("=========================");
78
79         }catch(Exception e){
80             e.printStackTrace();
81         }
82     }
83     public void close(){
84     }
85 }

测试代码

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 {

}

原文地址:https://www.cnblogs.com/-2016/p/12245524.html

时间: 2025-01-13 07:03:29

Java学习十四的相关文章

Java学习(十四):JDBC方式连接数据库举例

java定义了JDBC这一标准的接口和类,为程序员操作数据库提供了统一的方式. 下载对应数据库的jar包,添加到工程内. JDBC的操作方式比较单一,由五个流程组成: 1.通过数据库厂商提供的JDBC类库向DriverManager注册数据库驱动 2.使用DriverManager提供的getConnection()方法连接到数据库 3.通过数据库的连接对象的createStatement方法建立SQL语句对象 4.执行SQL语句,并将结果集合返回到ResultSet中 5.使用while循环读

Oracle学习(十四):管理用户安全

--用户(user) SQL> --创建名叫 grace 密码是password 的用户,新用户没有任何权限 SQL> create user grace identified by password; 验证用户: 密码验证方式(用户名/密码) 外部验证方式(主机认证,即通过登陆的用户名) 全局验证方式(其他方式:生物认证方式.token方式) 优先级顺序:外部验证>密码验证 --权限(privilege) 用户权限有两种: System:允许用户执行对于数据库的特定行为,例如:创建表.

从.Net到Java学习第四篇——spring boot+redis

从.Net到Java学习第一篇——开篇 从.Net到Java学习第二篇——IDEA and start spring boot 从.Net到Java学习第三篇——spring boot+mybatis+mysql 接上一篇,本篇使用到的框架redis.FastJSON. 环境准备 安装redis,下图是我本机的redis绿色版,你可以网上自行下载安装,如果不知道如何怎么操作,可以移步到我的另一篇文章:ASP.NET Redis 开发 以管理员身份打开CMD窗口: C:\Users\zouqj>e

JAVA学习第四十二课 — 泛型(二)—泛型接口&amp;&amp;通配符应用

一.泛型接口 interface Inter<T>{ public void show(T t); } class InterImple implements Inter<String>{//知道是字符串类型 public void show(String str){ System.out.println("show "+str); } } class InterImple_2<Q> implements Inter<Q>{//不知道是什

JAVA学习笔记(四十九)- Swing相关组件

JFrame组件 import java.awt.Color; import javax.swing.JFrame; import javax.swing.JPanel; /* * Swing是在AWT基础上的扩展 * javax.swing包及其扩展包,组件的命名多以J开关 * * JFrame组件 */ public class Test08 { public static void main(String[] args) { JFrame frame=new JFrame("我的窗体&qu

JAVA学习第四十九课 — IO流(三):缓冲区2 &amp; 装饰设计模式

一.模拟BufferedReader 自定义MyBuffereaReader 对于缓冲区而言,里面其实就是封装一个数组,对外提供方法对数组的操作,这些方法最终操作的都是数组的角标 原理:从源中取出数据存入缓冲区,再从缓冲区不断的取出数据,取完后,继续从源中继续取数据,进缓冲区,直至源中的数据取完,用-1做为结束标记 import java.io.*; class MyBufferedReader { private FileReader fr; //定义数组作为缓冲区 private char[

系统学习 Java IO (十四)----字符读写缓存和回退 BufferedReader/BufferedWriter &amp; PushbackReader

目录:系统学习 Java IO---- 目录,概览 BufferedReader BufferedReader 类构造器接收一个 Reader 对象,为 Reader 实例提供缓冲. 缓冲可以加快 IO 的速度. BufferedReader 不是一次从网络或磁盘读取一个字符,而是一次读取一个更大的块. 这通常要快得多,特别是对于磁盘访问和更大的数据量. 类似于 BufferedInputStream ,主要区别在于 BufferedReader 读取字符(文本),而 BufferedInput

Java编程思想学习(十四) 枚举

关键字enum可以将一组具名的值有限集合创建一种为新的类型,而这些具名的值可以作为常规的程序组件使用. 基本enum特性 调用enum的values()方法可以遍历enum实例,values()方法返回enum实例数组,且数组中元素保持在enum声明时的顺序. 1 public class TestEnum { 2 public static void main(String[] args) { 3 Fruit[] values = Fruit.values(); 4 for (Fruit fr

JAVA学习第四十八课 — IO流(二):文件的复制 &amp; 缓冲区1

一.复制文本文件 将G盘的文本文件复制到D盘上 也就是 读取G盘中文本文件的数据,写入D盘中->连读带写 而剪切呢,就是连读带写后,删除原盘的文件 <span style="font-family:KaiTi_GB2312;font-size:18px;"><strong>import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public clas