程序员每天工作的基本流程: 
1、从svn检出代码; 
2、运行单元测试,测试无误,进入下一步; 
3、开始一天的代码编写工作; 
4、代码提交到服务器之前进行单元测试; 
5、单元测试通过提交到svn服务器。

一些关于测试的概念:1、集成测试;2、验收测试、压力测试

由此引出了单元测试的最基本的需求是:实现自动化测试。

该门课程的主要内容: 
单元测试 
1、自动化测试 
(1)通过断言的方式来确定结果是否正确 Assert; 
(2)引入 junit 的 jar 包; 
(3)创建一个操作类 
2、基于测试开发的方式和优点 
3、stub 和 mock 
4、在容器中测试 
(1)jetty 
(2)catcus 
5、dbunit

接下来我们进行简单的操作

第一步建立一个java工程,导入junit 4.0版本以上的java包,最好不要使用eclipse自带的java包,将该java添加进入工程中

第二步:编写一个我们要进行测试类。我们使用加减操作

package com.weiyuan.test;

/**
* 需要测试的类用于增删改查操作
* */
public class Calcuate { public int add(int a,int b){
return a+b;
} public int minus(int a,int b){
return a-b;
} public int divide(int a,int b){
return a/b;
} public int mul(int a,int b){
return a/b;
} }

第三步:创建我们的测试类,我们在eclipse中创建sourefoder文件夹,命名为test文件夹

默认情况下:
source folder是用来存放Java源代码的,其下的所有Java源文件都会被时时编译成class文件。对于JavaSE的项目会被编译到项目目录下的bin目录下,对于JavaEE项目会被编译到相应的/WEB-INF/classes文件夹中

在test目录下建立包文件,包名称和我们需要测试的类一样,这样编译之后,会把test目录下生成的class文件和src目录下生成的class文件都放在bin目录下的com/weiyuan/test目录下

例如我们要测试cacluate中的add方法,对应的测试方法就像testAdd()开头

package com.weiyuan.test;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test; public class TestCalcuate {
private Calcuate calcuate; /**
*
* 执行任何测试方法之前都会调用该方法
* */
@Before
public void setUp(){
calcuate = new Calcuate();
} /**
* 为了兼容junit3
* 按照testXX方法命名
* public int (int a,int b){
* */ @Test
public void testAdd(){
int result = calcuate.add(12, 20);
Assert.assertEquals("加法有问题", result, 32);
} }

在junit3中由于测试类继承了了TestCase方法,在调用的时候直接就使用了下面这种形式

@Test
public void testAdd(){
int result = calcuate.add(12, 20);
assertEquals("加法有问题", result, 32);
}

为了能够兼容junit3,使用上面一样的方法,我们可以使用静态导入Assert类来解决上面的问题

package com.weiyuan.test;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*; public class TestCalcuate {
private Calcuate calcuate; /**
*
* 执行任何测试方法之前都会调用该方法
* */
@Before
public void setUp(){
calcuate = new Calcuate();
} /**
* 为了兼容junit3
* 按照testXX方法命名
* public int (int a,int b){
* */ @Test
public void testAdd(){
int result = calcuate.add(12, 20);
assertEquals("加法有问题", result, 32);
} }
接下来我们就可以测试
点击
 

绿色表示正常通过

表示有异常

接下来我们来看junit检查异常

package com.weiyuan.test;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*; public class TestCalcuate {
private Calcuate calcuate; /**
*
* 执行任何测试方法之前都会调用该方法
* */
@Before
public void setUp(){
calcuate = new Calcuate();
} /**
* 为了兼容junit3
* 按照testXX方法命名
* public int (int a,int b){
* */ @Test
public void testAdd(){
int result = calcuate.add(12, 20);
assertEquals("加法有问题", result, 32);
} @Test
public void testDivide(){
int result = calcuate.divide(12, 0);
assertEquals("触发有问题", result, 4);
} }

我们在上面除法的时候被除数不能为0,这里肯定会抛出异常

导致上面的用例失败,如果我们要让该用例通过,可以采用下面的方法

标准的JUnit的org.junit.Test注解提供了一个expected属性,你可以用它来指定一个Throwble类型,如果方法调用中抛出了这个异常,这条测试用例就算通过了。

package com.weiyuan.test;

import java.security.AlgorithmParameterGenerator;
import java.security.AlgorithmParameters; import org.junit.Assert;
import org.junit.Before;
import org.junit.Test; import static org.junit.Assert.*; public class TestCalcuate {
private Calcuate calcuate; /**
*
* 执行任何测试方法之前都会调用该方法
* */
@Before
public void setUp(){
calcuate = new Calcuate();
} /**
* 为了兼容junit3
* 按照testXX方法命名
* public int (int a,int b){
* */ @Test
public void testAdd(){
int result = calcuate.add(12, 20);
assertEquals("加法有问题", result, 32);
} @Test(expected=ArithmeticException.class)
public void testDivide(){
int result = calcuate.divide(12, 0);
assertEquals("触发有问题", result, 4);
} }

这样运行的时候就可以通过测试

接下来我们讲讲性能测试的timeout

package com.weiyuan.test;

import java.security.AlgorithmParameterGenerator;
import java.security.AlgorithmParameters; import org.junit.Assert;
import org.junit.Before;
import org.junit.Test; import static org.junit.Assert.*; public class TestCalcuate {
private Calcuate calcuate; /**
*
* 执行任何测试方法之前都会调用该方法
* */
@Before
public void setUp(){
calcuate = new Calcuate();
} /**
* 为了兼容junit3
* 按照testXX方法命名
* public int (int a,int b){
* */ @Test
public void testAdd(){
int result = calcuate.add(12, 20);
assertEquals("加法有问题", result, 32);
} @Test(expected=ArithmeticException.class)
public void testDivide(){
int result = calcuate.divide(12, 0);
assertEquals("触发有问题", result, 4);
} /**
* 如果测试方法执行超过200毫秒
* 就会报错
* */ @Test(timeout=200)
public void testTimeout(){
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }

我们来运行下

@Before 来注释多个方法,这些方法都在每个测试之前运行:

@After来注释的多个方法,这些方法在每个测试方法之后被运行

1 注释(Annotations)

Annotation

含义

@Test public void method()

定义一个要测试的方法

@Before public void method()

在每一个测试之前都会被执行的方法,这个方法常常用来进行一

些测试环境的准备,比喻说读入输入数据,初始化类

@After public void method()

与@Before进行对应,做一个清理工作

@BeforeClass public void method()

在所有的测试开始之前执行,这个方法在类运行的时候运行,

而且只会运行一次,所以常常用来做一些所有的方法都要依赖

到工作,比喻说,数据库的链接。

@AfterClass public void method()

与@BeforeClass进行对应,做一些类级别的清理工作

@Ignore

表明方法是被忽略的,这个方法非常实用,比喻你的方法已经

修改,但是对应的测试方法还没有得到一致的修改的时候,可以

忽略掉这个测试方法先。

@Test(expected=IllegalArgumentException.class)

检查测试方法是不是抛出了对应的异常

@Test(timeout=100)

如果方法的执行操作所耗费的毫秒数>100MS,那么方法失败。

junit基本介绍视频笔记1的更多相关文章

  1. ng机器学习视频笔记(一)——线性回归、代价函数、梯度下降基础

    ng机器学习视频笔记(一) --线性回归.代价函数.梯度下降基础 (转载请附上本文链接--linhxx) 一.线性回归 线性回归是监督学习中的重要算法,其主要目的在于用一个函数表示一组数据,其中横轴是 ...

  2. ng机器学习视频笔记(二) ——梯度下降算法解释以及求解θ

    ng机器学习视频笔记(二) --梯度下降算法解释以及求解θ (转载请附上本文链接--linhxx)   一.解释梯度算法 梯度算法公式以及简化的代价函数图,如上图所示. 1)偏导数 由上图可知,在a点 ...

  3. ng机器学习视频笔记(十六) ——从图像处理谈机器学习项目流程

    ng机器学习视频笔记(十六) --从图像处理谈机器学习项目流程 (转载请附上本文链接--linhxx) 一.概述 这里简单讨论图像处理的机器学习过程,主要讨论的是机器学习的项目流程.采用的业务示例是O ...

  4. DevExpress v15.2新功能介绍视频(25集全)

    DevExpress v15.2新功能介绍视频(25集全) http://www.devexpresscn.com/Resources/Documentation-508.html DevExpres ...

  5. IDEA 正式版终于支持中文版和 JDK 直接下载了(太方便了)附介绍视频

    IDEA 2020.1 经过了漫长的打磨终于发布正式版了,而这次的版本不止直接支持 Java 14,还带来了两个重量级的功能,官方中文版支持和 JDK 直接下载. 在之前的开发中,当我们需要下载 JD ...

  6. [基础]斯坦福cs231n课程视频笔记(二) 神经网络的介绍

    目录 Introduction to Neural Networks BP Nerual Network Convolutional Neural Network Introduction to Ne ...

  7. 无限互联IOS电影项目视频笔记

    下面是该iOS项目视频教程的内容大纲: 观看指南 (1)项目为第一阶段内容 (2)需要熟练掌握OC语言 (3)UI部分需要学习到第十节课 (4)项目适合刚入门的iOS开发者 1.第一天 (1)iOS ...

  8. 《Junit实战》读书笔记

    核心原则:任何没有经过自动测试的程序功能都可以当做不存在 单元测试框架的大三规则: 1.每个单元测试都必须独立于其他所有单元测试而运行 2.框架应该以单个测试为单元来检测和报告错误 3.应该易于定义要 ...

  9. 斯坦福机器学习视频笔记 Week1 Linear Regression and Gradient Descent

    最近开始学习Coursera上的斯坦福机器学习视频,我是刚刚接触机器学习,对此比较感兴趣:准备将我的学习笔记写下来, 作为我每天学习的签到吧,也希望和各位朋友交流学习. 这一系列的博客,我会不定期的更 ...

随机推荐

  1. 基于Python豆瓣自动化测试【2】

    -- Pytest基础使用教程[2] 从测试报告说起 承接上一篇中最后的测试结果图,使用过的pytest-html 插件原生态的报告的话.可能会发现 内容样式都有些不同.其实是做了些扩展相关设置所呈现 ...

  2. 【朝夕专刊】RabbitMQ消息的持久化优先级

    欢迎大家阅读<朝夕Net社区技术专刊> 我们致力于.NetCore的推广和落地,为更好的帮助大家学习,方便分享干货,特创此刊!很高兴你能成为忠实读者,文末福利不要错过哦! 上篇文章介绍了R ...

  3. Alpha冲刺 —— 5.5

    这个作业属于哪个课程 软件工程 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 Alpha冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.会议内容 1.展 ...

  4. 开心一下-实现一个基于Java的中文编程语言2

    https://mp.weixin.qq.com/s/VmCTvh0c7X9DjIgIMycdlw   上一篇所提到的只是使用中文写Java,而不能算作一门新的语言.作为一门中文语言,需要语言提供的关 ...

  5. Chisel3 - Tutorial - ShiftRegister

    https://mp.weixin.qq.com/s/LKiXUgSnt3DzgFLa9zLCmQ   简单的寄存器在时钟的驱动下,逐个往下传值.   参考链接: https://github.com ...

  6. Shiro (Shiro + JWT + SpringBoot应用)

    Shiro (Shiro + JWT + SpringBoot应用) 目录 Shiro (Shiro + JWT + SpringBoot应用) 1.Shiro的简介 2.Shiro + JWT + ...

  7. WEB前端程序员需要的网站整理

    前端学习资源实在是又多又广,在这样的一个知识的海洋里,我们像一块海绵一样吸收,想要快速提高效率,平时的总结不可缺少,以下总结了一些,排版自我感觉良好,推送出来. 一.插件类网站 jQuery插件库:h ...

  8. Java实现 LeetCode 784 字母大小写全排列(DFS)

    784. 字母大小写全排列 给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串.返回所有可能得到的字符串集合. 示例: 输入: S = "a1b2" ...

  9. Java实现 LeetCode 887 鸡蛋掉落(动态规划,谷歌面试题,蓝桥杯真题)

    887. 鸡蛋掉落 你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑. 每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去. 你知道存在楼层 F ,满足 0 < ...

  10. Java实现 蓝桥杯 一步之遥

    一步之遥 从昏迷中醒来,小明发现自己被关在X星球的废矿车里. 矿车停在平直的废弃的轨道上. 他的面前是两个按钮,分别写着"F"和"B". 小明突然记起来,这两个 ...