Java 工具 JUnit单元测试

@author ixenos

1.1.   JUnit单元测试框架的基本使用


一、搭建环境:

导入junit.jar包(junit4)

二、写测试类:

0,一般一个类对应一个测试类。

1,测试类与被测试类最好是放到同一个包中(可以是不同的源文件夹)

2,测试类的名字为被测试类的名字加Test后缀。

三:写测试方法:

0,一般一个方法对应一个单元测试方法。

1,测试方法的名字为test前缀加被测试方法的名字,如testAddPerson()。

2,单元测试方法上面要加上@Test注解(org.junit.Test)!

3,单元测试方法不能有参数,也不能有返回值(返回void)!测试的方法不能是静态的方法。

四、测试方法的基本使用:

1,可以单独执行一个测试方法,也可以一次执行所有的、一个包的、一个类中所有的测试方法。

2,执行完后,显示绿色表示测试成功;显示红色表示测试失败(抛异常后会测试失败)。

 package JUnitTest;

 import java.util.Arrays;

 import org.junit.Test;

 public class Demo1 {
public static void main(String[] args) {
System.out.println("HelloWorld");
} @Test
public void sort() {
int[] array = new int[] { 1, 2, 3, 4, 8, 5, 100, 34, 55 };
for (int i = 0; i < array.length - 1; i++) {
for (int j = i + 1; j < array.length; j++) {
if (array[i] > array[j]) {
int tmp = array[j];
array[j] = array[i];
array[i] = tmp;
}
}
}
System.out.println(Arrays.toString(array));
} public static String sort1() {
int[] array = new int[] { 1, 2, 3, 4, 8, 5, 100, 34, 55 };
for (int i = 0; i < array.length - 1; i++) {
for (int j = i + 1; j < array.length; j++) {
if (array[i] > array[j]) {
int tmp = array[j];
array[j] = array[i];
array[i] = tmp;
}
}
}
return Arrays.toString(array);
} }

1.2.   Assert断言工具类


其中有一些静态的工具方法(不符合期望就抛异常):

assertTrue(...)        参数的值应是true

assertFalse(...) 参数的值应是false

assertNull(...)         应是null值

assertNotNull(...)   应是非null的值

assertSame(...)              使用==比较的结果为true(表示同一个对象)

AssertNotSame(...) 使用==比较的结果为false

assertEquals(...)     两个对象equals()方法比较结果为true

 package JUnitTest;

 import org.junit.Test;

 import junit.framework.Assert;

 /**
* 在以前判断方法正误:
* 1.如果需要测试,都需要在main方法上调用,实际上每个类的main方法也可看成一种测试手段
* 2.结果都需要人工对比来判断程序正误
*
* 有了JUnit后:
* 1.对方法的测试可模块化进行
* 2.在测试类中规定程序的正误判断
* 3.点击方法名测试一个方法,点击类名测试测试类中所有Test方法
*
* 如果只是判断结果:
* 1.可以使用断言 Assert.assertSame(expected, actual);
* 2.断言是JUnit框架的部分
*
* jUnit规范
* 1.一个类如果需要测试,那么就应该对应着一个测试类,测试类的命名规范:被测试类名+Test
* 2.一个被测试的方法一般对应着一个测试的方法,测试方法命名规范:test+被测试的方法名
*
* 偷懒技巧:
* 1.直接在源代码的方法标记@Test,测试完记得删去
* 2.@Test方法不能标记static方法,也不能带有形参,可以另外写个小方法在旁边,
* 然后调用带有形参的方法
*
*
*/ // 测试类
public class Demo2 { @Test
public void testSort() {
String ar = Demo1.sort1();
if (ar == "haha") {
throw new RuntimeException();
} else {
System.out.println("fuck");
}
Assert.assertTrue(ar != "haha"); } }

1.3.   用于准备环境、清理环境的方法


@Test

表示单元测试方法。

@Before

所修饰的方法应是非static的(且没有参数,返回值为void)。

表示这个方法会在本类中的每个单元测试方法之前都执行一次。

@After

所修饰的方法应是非static的(且没有参数,返回值为void)。

表示这个方法会在本类中的每个单元测试方法之后都执行一次。

@BeforeClass

所修饰的方法应是static的(且没有参数,返回值为void)。

表示这个方法会在本类中的所有单元测试方法之前执行,只执行一次。

@AfterClass

所修饰的方法应是static的(且没有参数,返回值为void)。

表示这个方法会在本类中的所有单元测试方法之后执行,只执行一次。

 package JUnitTest;

 import java.io.FileInputStream;
import java.io.IOException; import org.junit.After;
import org.junit.Before;
import org.junit.Test; /**
* 当所测试的方法需要准备环境时,为了让测试方法更纯粹,将准备测试环境和删除测试环境分离在外面
* 在jUnit框架中,有@Before和@After两个注解用来分别处理
* 不过,当批量测试几个需要准备环境的方法时,程序会不断调用准备和删除,此时,可以通过-
* -@BeforeClass和@AfterClass注解来标记,但此时将准备和删除改为静态方法static
*
*/
public class Demo3 { //准备测试的环境
@Before
//@BeforeClass
public void beforeRead(){
System.out.println("Before");
} //读取文件数据,吧文件
@Test
public void readFile() throws IOException{
FileInputStream fileInputStream = new FileInputStream("F:\\a.txt");
int content = fileInputStream.read();
System.out.println("内容" + content);
fileInputStream.close();
} //第二个测试的方法
@Test
public void haha(){ } //清理测试的环境
@After
//@AfterClass
public void afterRead(){
System.out.println("After");
} }

Java 工具 JUnit单元测试的更多相关文章

  1. 【Java】Junit单元测试

    什么是单元测试? 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证. 对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Ja ...

  2. Java 之 Junit 单元测试

    Junit 单元测试 测试分类: 1.黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值. 2.白盒测试:需要写代码.关注程序具体的执行流程. Junit 测试:(属于白盒测试) 步骤: 1 ...

  3. java的Junit单元测试

    函数主要分为以下几类: 1.有固定返回值的.用assert 方法即可. 2.修改了状态. (1)修改了数据库中的数据.可以查询数据库(select  语句),看数据是否发生了改变. --原则上应该是用 ...

  4. Java知识积累——单元测试和JUnit(一)

    说起单元测试,刚毕业或者没毕业的人可能大多停留在课本讲述的定义阶段,至于具体是怎么定义的,估计也不会有太多人记得.我们的教育总是这样让人“欣 慰”.那么什么是单元测试呢?具体科学的定义咱就不去关心了, ...

  5. 解决Junit单元测试 找不到类 ----指定Java Build Path

    做junit 单元测试时,发现怎么执行都是以前编译过得代码. 最后找到原因了, src/test/java 编译完的.class路径是 Default output folder Default ou ...

  6. Spring完全基于Java配置和集成Junit单元测试

    要点: 配置继承WebApplicationInitializer的类作为启动类,相当于配置web.xml文件 使用@Configuration注解一个类,在类中的方式使用@Bean注解,则表名该方法 ...

  7. JUnit单元测试教程(翻译自Java Code Geeks)

    JUnit单元测试教程--终极指南 JUnit单元测试教程终极指南 说明 单元测试简介 1 什么是单元测试 2 测试覆盖 3 Java中的单元测试 JUnit简介 1 使用Eclipse实现简单JUn ...

  8. day1 java基础回顾-Junit单元测试

    Junit单元测试框架的基本使用 一.搭建环境: 导入junit.jar包(junit4) 二.写测试类: 0,一般一个类对应一个测试类. 1,测试类与被测试类最好是放到同一个包中(可以是不同的源文件 ...

  9. Java单元測试工具JUnit 5新特性一览

    Java单元測试工具JUnit 5新特性一览 作者:chszs,未经博主同意不得转载. 经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs JUnit是最流行的开源 ...

随机推荐

  1. 诡异的数学,数字问题 - leetcode

    134. Gas Station 那么这题包含两个问题: 1. 能否在环上绕一圈? 2. 如果能,这个起点在哪里? 第一个问题,很简单,我对diff数组做个加和就好了,leftGas = ∑diff[ ...

  2. [MFC美化] Skin++使用详解-使用方法及注意事项

    主要分为以下几个方面: 1.Skin++使用方法 2.使用中注意事项 一. Skin++使用方法 SkinPPWTL.dll.SkinPPWTL.lib.SkinPPWTL.h ,将三个文件及相应皮肤 ...

  3. android屏幕适配之度量单位、屏幕分类、图标尺寸归类分析

    好久没有做android项目UI的适配了,好多基本概念都已经模糊了,于是萌生了将屏幕分辨率.常用单位.常用图标尺寸等信息规整的想法,一下就是通过查询资料,自己验证的一些随笔,如有失误之处,望大家及时予 ...

  4. java操作mongodb——更新数据

    Java中可以通过updateOne,updateMany,replaceOne方法进行集合的文档更新.但是 _id 是不能更新的 updateOne只会更新一条数据,即使通过Filters.lt(& ...

  5. jmeter之jtl文件解析

    我们知道命令行的方式执行完成jmeter后,会生成jtl文件,里面打开后就是一行行的测试结果, <httpSample t="1" lt="1" ts=& ...

  6. 使用 voluptuous 校验数据

    在 Python 中,我们经常需要对参数进行校验,这是我们有好多种方法,例如写很多 if 啊,或者写正则表达式啊等等,技巧高的人可以写得很巧妙,而技巧一般的人呢,可能会写得很冗长,例如我,经常就不能很 ...

  7. linux for 使用

    第一种:命令使用方法 例子1: cat test.txt 1 2 3 for i in $(cat test.txt) do echo $i done 例子2: for i in 1 2 3 4 do ...

  8. Proxy SwitchySharp chrome网络代理【转】

    Proxy SwitchySharp chrome网络代理插件概述 SwitchySharp 是 Google Chrome 浏览器上的一个代理管理扩展程序,是一款可以自己设置谷歌浏览器使用方式的ch ...

  9. 【转】Zookeeper-Watcher机制与异步调用原理

    声明:本文转载自http://shift-alt-ctrl.iteye.com/blog/1847320,转载请务必声明. Watcher机制:目的是为ZK客户端操作提供一种类似于异步获得数据的操作. ...

  10. 通过反射获取所有的Action 一般用于权限管理

    public IList<ActionPermission> GetAllActionByAssembly() { var result = new List<ActionPermi ...