【软件测试】Junit 理论+实践 —— 适合初学者的单元测试

Junit

  • 一、Junit测试前期准备
      • 1. 什么是Junit
      • 2. 开启Junit
  • 二、JUnit 理论知识
      • 1. Junit可以用来干什么?
      • 2. 重要API
        • (1)Assert类
        • (2 )TestCase类
        • (3)TestResult 类
        • (4)TestSuite 类

一、Junit测试前期准备

1. 什么是Junit

Junit 是一个基于Java语言实现的单元测试的框架。通过Junit 测试框架就可以对项目中的某个类的方法进行测试。

2. 开启Junit

本文假设大家都有Java开发经验,使用IDEA,以下是在maven项目中添加测试类的步骤
步骤一:加入依赖
首先,在pom.xml文件中加入Junit依赖:

 <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>4.11</version>
 </dependency>

步骤二:下载插件
下载插件:
File ——> Settings ——> Plugins ——> 搜索junit下载以下插件
【软件测试】Junit 理论+实践 —— 适合初学者的单元测试_第1张图片
至此,作为一个maven项目就可以开始使用Junit框架了

步骤三:开始测试
maven的test文件夹就是用来存放测试类的文件夹,所以对本项目的测试文件都存放在该目录下。
快捷生成对应类或者方法的测试类:到类名处,按下快捷键: CTRL + Shift + T 出现:
在这里插入图片描述
进入创建框:
【软件测试】Junit 理论+实践 —— 适合初学者的单元测试_第2张图片
点击OK后就会在test目录下创建一个自己定义测试类名称的测试类,以及勾选的方法。如下:
【软件测试】Junit 理论+实践 —— 适合初学者的单元测试_第3张图片
到这里,就可以在对应的方法中编写测试的方法,随便写写:
【软件测试】Junit 理论+实践 —— 适合初学者的单元测试_第4张图片
每个被生成出来的测试方法都有这个可以直接运行的标志,就不需要通过main方法,而可以直接只运行这一小部分。

基本的简单实践后,再来学学理论这一part,将会有更加明朗的认识。

二、JUnit 理论知识

1. Junit可以用来干什么?

上面我们以及初步知道JUnit测试框架可以用来编写一些测试类,但上面只是一个一个的运行测试类,如果在大型项目中,可不可以将所有测试方法统一组装起来运行呢?当然可以!这就是测试套件和测试运行器。
那如果想在测试中加一些判断,判断运行后的结果与期望效果是否一样,就可以使用断言。

2. 重要API

JUnit是使用Java语言编写的一个框架,在使用时,我们需要导入对应的包,调用类的不同API来达到目的。
JUnit中最重要的就是 junit.framework 包,它包含了所有测核心类,最重要的四个类是:

类名 功能
Assert 断言方法的集合
TestCase 多重测试固定装置
TestResult 测试结果
TestSuite 组合多个测试方法的套件

(1)Assert类

这个类就是用来判断程序测试结果和预期结果是否一样。有很多判断的方式,只有返回是错误,才会记录下来:
重点有的方法:

方法 作用
void assertEquals(boolean expected, boolean actual) 检查两个变量是否相等
void assertFalse(boolean condition) 检查条件为假,不是false就错误
void assertNotNull(Object object) 检查对象不为空,为null就错误
void assertNull(Object object) 检查对象为空,不为null就错误
void assertTrue(boolean condition) 检查条件为真

写个小栗子:

@Test
    public void testAssert() {
        int n = 5;
        String s = "test", s1 = null;
        assertEquals(n,5);
        assertNotEquals(s,"tttt");
        assertFalse(n > 6);
        assertTrue(n == 5);
        assertNotNull(s);
        assertNull(s1);

    }

执行,通过:
在这里插入图片描述

(2 )TestCase类

TestCase 类的一些重要方法列式如下:

方法 功能
int countTestCases() 为被run(TestResult result) 执行的测试案例计数
TestResult createResult() 创建一个默认的 TestResult 对象
String getName() 获取 TestCase 的名称
TestResult run() 一个运行这个测试的方便的方法,收集由TestResult 对象产生的结果
void run(TestResult result) 在 TestResult 中运行测试案例并收集结果
void setName(String name) 设置 TestCase 的名称
void setUp() 每一个测试用例执行前执行
void tearDown() 每一个测试用例执行后再执行
String toString() 返回测试案例的一个字符串表示

举一个例子:

import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class practice extends TestCase {
    protected double fValue1;
    protected double fValue2;

    @Before
    public void setUp() {
        fValue1= 2.0;
        fValue2= 3.0;
    }

    @Test
    public void testAdd() {
        double ans = fValue1 + fValue2;
    }
	@Test
    public void testMul() {
        double ans = fValue1 * fValue2;
    }
    @After
    public void tearDown() {
        fValue1= 0;
        fValue2= 0;
    }
}

这就是一个简单的测试类,两个test测试方法在执行前都会先执行setUp()方法,在执行结束后会执行tearDown()方法。还有两个相似的是beforeClass() 方法和afterClass() 方法它们都是在最开始/结束执行一次。

(3)TestResult 类

TestResult 类是用来统计收集所有执行测试案例的结果。

TestResult 类的一些重要方法如下:

方法 功能
void addError(Test test, Throwable t) 在错误列表中加入一个错误
void addFailure(Test test, AssertionFailedError t) 在失败列表中加入一个失败
void endTest(Test test) 显示测试被编译的这个结果
int errorCount() 获取被检测出错误的数量
int failureCount() 获取被检测出的失败的数量
void run(TestCase test) 运行 TestCase
int int runCount() 获得运行测试的数量
void startTest(Test test) 声明一个测试即将开始
void stop() 标明测试必须停止

(4)TestSuite 类

TestSuite 类是测试的组成部分。它可以将多种测试用例都组合起来一起运行。
TestSuite 类的一些重要方法列式如下:

方法 功能
void addTest(Test test) 在套件中加入测试用例
void addTestSuite(Class testClass) 将类中的测试加到套件中
int countTestCases() 对这个测试即将运行的测试案例进行计数
String getName() 返回套件的名称
void run(TestResult result) 在 TestResult 中运行测试并收集结果
void setName(String name) 设置套的名称
int testCount() 返回套中测试的数量
static Test warning(String message) 返回会失败的测试并且记录警告信息

来一个例子:
先创建了TestJunit1, TestJunit2, TestJunit3三个测试类,接着创建一个suite套件将它们组合起来一起运行。如下

import junit.framework.*;
public class JunitTestSuite {
   public static void main(String[] a) {
      TestSuite suite = new TestSuite(
      					TestJunit1.class, TestJunit2.class, TestJunit3.class );
      TestResult result = new TestResult();
      suite.run(result);
      System.out.println("Number of test cases = " + result.runCount());
    }
}

如果我们想在某一个测试类中不执行其中一个测试方法,就可以添加@Ignore 注释,添加后,这个方法就会被忽略而不会执行。

这就是JUnit的简单入门,如果文章有任何问题欢迎评论指正,希望能帮到你。也欢迎点赞关注一起进步!
参考文章:https://www.w3cschool.cn/junit/fegu1hv3.html

你可能感兴趣的:(软件测试)