首页 > 其他分享 >【单元测试】Junit 4(七)--junit4 TestRunnner

【单元测试】Junit 4(七)--junit4 TestRunnner

时间:2023-03-19 21:58:11浏览次数:45  
标签:-- 单元测试 junit public org Test import junit4 class

Test Runners

我没想到一个特别合适的词来形容Test Runners的作用,所以多说几句:

Test Runners 是具有特殊功能的执行测试用例的通道,也可以理解为测试的执行者,例如可以同时运行多个测试用例,也可以具有这个测试执行者特有的功能。

用法1

/**
 *      Test Runner 示例代码
 */
public class TestRunnerDemo {
    @Test
    public void runnerTest(){
        org.junit.runner.JUnitCore.runClasses(ExampleUnitTest.class, StudentTest.class);
    }
}

我们可以通过org.junit.runner.JUnitCore.runClasses()方法来同时运行多个测试class文件,里面的参数个数是随意的,例如示例代码中按照顺序运行了ExampleUnitTest.class和StudentTest.class。

用法2

/**
 *      Test Runner 实例代码2
 */
@RunWith(Suite.class)
// 绑定的测试用例集合
@Suite.SuiteClasses({ExampleUnitTest.class, StudentTest.class})
public class TestRunnerDemo2 {
}

With与其他测试用例进行绑定,然后@Suite.SuiteClasses({ExampleUnitTest.class, StudentTest.class})来设置绑定的测试用例的集合,当运行这个测试用例的时候,绑定的集合也会运行。

用法3

package com.lzp.unittestdemo.testrunner;

import com.lzp.unittestdemo.Utils;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

import java.util.Arrays;
import java.util.Collection;

/**
 * <p>
 * Test Runner 示例代码3
 */
@RunWith(Parameterized.class)
public class TestRunnerDemo3 {

    /**
     * name可以用来描述这个测试的信息
     * 其中{index}表示当前的索引值,因为执行的时候会遍历集合
     * {0} 表示参数键值对的第一个位置
     * {1} 表示参数键值对的第二个位置,坐标以此类推
     */
    @Parameters()
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[][]{
                {0, 0}, {1, 1}, {2, 1}, {3, 2}, {4, 3}, {5, 5}, {6, 8}
        });
    }

    private int fInput;

    private int fExpected;

    /**
     * 这里模拟了创建对象的过程,Juit会自动把@Parameters里面的数据集合,按照顺序依次放入构造方法中
     * */
    public TestRunnerDemo3(int input, int expected) {
        fInput = input;
        fExpected = expected;
        System.out.println(input + " :" + expected);
    }

    /**
     * 测试方法,通过Assert.assertEquals判断参数是否符合我们的期望
     * */
    @Test
    public void test() {
        Assert.assertEquals(fExpected, Utils.compute(fInput));
    }
}

使用@RunWith(Parameterized.class)会稍微复杂一点,但是使用起来非常的方便,我们可以创建很多个相同类型的对象,然后通过测试方法对属性进行操作,验证我们创建的类是否符合我们的期望。

用法4

@RunWith(Categories.class)
// 为这个测试添加分类
@Category(MyCategory.class)
// 绑定的测试类集合
@Suite.SuiteClasses( { TestRunnerDemo.class, TestRunnerDemo3.class })
// 交集,运行SuiteClasses中与自己分类相同的测试类
//@Categories.IncludeCategory(MyCategory.class)
// 除去交集,运行SuiteClasses中与自己分类不同的测试类
@Categories.ExcludeCategory(MyCategory.class)
public class TestRunnerDemo4 {
    @Test
    public void test(){
        assertEquals(4, 2 + 2);
    }
}

使用@Category可以对测试类添加分类,然后和@Suit结合使用,可以同时运行相同分类或不同分类的测试,算是上一种用法的升级版。

用法5

有时候我们会把测试方法卸载内部类中,这个时候我们需要使用@RunWith(Enclosed.class),这样可以运行内部类的测试方法, 这里贴出官方的demo连接:https://github.com/junit-team/junit4/wiki/'Enclosed'-test-runner-example ,大家可以学习一下。

用法6

使用第三方的Test Runner:
img

这是官网的举例,之后我们会用到MockitoJUnitRunner,其他的大家可以自己去了解一下如何使用。

标签:--,单元测试,junit,public,org,Test,import,junit4,class
From: https://www.cnblogs.com/hmy71/p/junit_7.html

相关文章

  • fastadmin 自定义build_toolbar按钮
    fastadmin自定义build_toolbar按钮何渊渊于2020-09-2311:13:31发布1930收藏4分类专栏:fastadmin文章文章标签:javascriptphp版权fastadmin同时被2个专栏收......
  • 第四周周报
    第四周周报(2023/3/13-2023/3/19)本周总结本周完成的主要内容是哈希专题题单以及蓝桥杯真题日程描述3.13:补abc293和NebiusWelcomeRound的题目3.14:蓝桥杯真题3.......
  • 【VTK学习笔记】VTK基本数据结构_3.2数据对象和数据集
    任务:把几何结构和拓扑结构加入到数据集中1.无拓扑结构1#include<vtkSmartPointer.h>2#include<vtkPoints.h>//几何结构3#include<vtkPolyData.h>//数据集......
  • GnuRadio-常见模块
    1、信号波形生成器(WaveformGenerators)(1)常数信源(ConstantSource)(2)噪声信源(NoiseSource)(3)信号源(SignalSource)例如正弦信号、方波信号等2、调制器(Modulators)(1)AM解调(AMDemo......
  • test
    暂无TRANSLATEwithxEnglishArabicHebrewPolishBulgarianHindiPortugueseCatalanHmongDawRomanianChineseSimplifiedHungarianRussian......
  • 保龄球计分程序
        计算每轮单独得分,十轮累加得总分。每轮单独得分,按规则可以大致总结出,如果议论中首次全中或者两次补中,则相当于第一次滚球后连续加后面两次;否则,只加后面一次。......
  • CF855 Div3 VP 游记
    比赛链接好长时间不写博文了甚至快忘记了(今天水一发Div3游记,在Div4比赛之前。第一次VP,当然得选一个简单点的了,打了50分钟多一点。排名不错,400多。$T1$:开始时......
  • Activiti7 基础篇 Activiti类关系图
    上面我们完成了Activiti数据库表的生成,java代码中我们调用Activiti的工具类,下面来了解Activiti的类关系 一、类关系图  新版本,IdentityService,FormService两个Seri......
  • 实验2
    1、实验任务1源代码及运行结果截图:#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5#defineR1586#defineR2701intmain(){intnumb......
  • JAVA异常处理
    Java异常简介:JAVA异常处理的目的是为保证程序在出错之后,依旧可以执行一些其它操做。该操作可以是用户的其它行为,也可以是保存程序运行后的一些结果,还可以是合理的结束程......