java单元测试---junit简介

unit是一套开源的测试框架,各个语言的单元测试框架大部分都是基于这个框架演变而来,单元测试即是最小的可测试单元,例如c语言中的函数(cunit),和java中类(junit)

所以java中单元测试简称junit

首先编写要测试的类

package com.leige.test;

/**
 * @author 
 * 首先编写要测试来得类
 *
 */
public class Calc {
    public int add(int x,int y){
        System.out.println("相加为==="+(x+y));
    return x+y;
    }
}

1:junit中注解的解释及使用:

测试过程,解释依然在代码中:

package com.leige.test;






import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;



/**
 * @author 
 *简介java单元测试,junit操作
 *
 */
public class CalcTest {
//简介junit注解使用
/*  需要注意的是,beforeclass和afterclass必须要由static修饰
 * 而其他方法不必
 * 
 * */
    @BeforeClass
    //这个方法是类中所有方法执行之前执行,所以经常在这个方法中加载配置
    public static void beforeCalc(){
        System.out.println("在类中所有方法之前执行....");
    }
    //被测试方法执行之前
    @Before
    public void before(){
        System.out.println("在被测试方法之前执行....");
    }
    @Test
    public  void addTest(){
        new Calc().add(1, 3);
    }
    @After
    //被测试方法执行之后执行
    public void after(){
        System.out.println("在被测试方法执行之后执行.....");
    }
    //在类中所有方法执行之后执行
    //@AfterClass所修饰的方法通常用来对资源的清理,如关闭数据库的连接
    @AfterClass
    public static void afterClass(){
        System.out.println("在类中所有方法执行之后执行.....");
    }

}

2:junit的参数化测试

比如当我们要使用,大量的测试数据来测试一个算法的性能或者其正确性是,我们不可能一个个输入测试数据,所以需要用到参数化测试,需要自动导入参数:规范如下:

package com.leige.test;

import static org.junit.Assert.*;

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

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

/**
 * @author 
 * 批量参数化测试数据
 *
 */
/**
 * @author 
 *
 */
@RunWith(Parameterized.class)
public class CalcParameters {
    private int x=0;
    private int y=0;
    private int expected=0;

    /*
     * 1.更改默认的测试运行器为RunWith(Parameterized.class)
     * 2.声明变量来存放预期值 和结果值
     * 3.声明一个返回值 为Collection的公共静态方法,并使用@Parameters进行修饰
     * 4.为测试类声明一个带有参数的公共构造函数,并在其中为之声明变量赋值
     */
    //实现将值赋给形参
    public CalcParameters(int x, int y, int expected) {
        this.x = x;
        this.y = y;
        this.expected = expected;
    }


    /**
     * @return
     * 提供参数
     */
    @Parameters
    public static Collection<Object[]> t() {
        //这里也可以从文件中读取测试数据,也可以自己生成
        return Arrays.asList(new Object[][]{
                {1,2,3},
                {2,2,4},
                {2,1,3},
                {2,5,7}
        }) ;
    }

    /**执行测试
     * 
     */
    @Test
    public void testAdd() {
    assertEquals(expected, new Calc().add(x,y));
    }




}

3:junit中的组合测试,因为不是十分理解,我暂时没有用过,所以先写在这里,作为记录参考别人的博客:

 JUnit 中所有的测试方法都是由测试运行器负责执行。JUnit单元测试提供了一个默认的测试运行器BlockJunit4ClassRunner,但是并没有限制必须使用默认的运行器。

/*我们可以根据需要定制自己的运行器,只要继承自org.junit.runner.Runner即可。一般情况下,默认测试运行器可以应对绝大多数的单元测试要求。当使用JUnit提供的一些高级特性(如实现参数化测试、实现打包测试或者针对特殊需求定制JUnit测试方式)时,则需要显示地声明测试运行器。如@RunWith(CustomerTestRunner.class)。*/
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
/**
 * @author 都市桃源
 *
 */
@RunWith(Suite.class)
@SuiteClasses({JunitExceptionTest.class,Junit4ParameterTest.class,JunitTimeoutTest.class})
public class JUnit4SuiteTest {
 @Test
 public void allTest(){
  assertNotNull(null);
 }
}
//JUnit 为我们提供了打包测试的功能,将所有需要运行的测试用例集中起来,一次性地运行所有测试用例,大大地方便了我们的//测试工作。

//通过@RunWith注解指定一个Suite测试运行器,另外通过@SuiteClasses注解将所有需要进行测试的用例打包起来。

/*
     * 1.测试套件就是组织测试类一起运行的
     * 
     * 写一个作为测试套件的入口类,这个类里不包含其他的方法
     * 更改测试运行器Suite.class
     * 将要测试的类作为数组传入到Suite.SuiteClasses({})
     */

最好,建议测试代码和源码分开,这样在软件的开发完成时就可以将测试代码完全剔除,作为产品,交付给客户了,如果和源码放在混合在一起,会显得很不清晰,也不利于后期维护

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JUnit-BOM(Bill of Materials)是JUnit团队为JUnit 5框架提供的一个特殊模块。它的目的是简化JUnit 5的依赖管理。通过添加JUnit-BOM到你的项目中,你可以使用JUnit 5的所有核心模块和扩展模块,而无需单独指定每个模块的版本。 要使用JUnit-BOM,你需要在你的项目的构建文件中添加一个依赖项。对于Maven项目,可以在`<dependencies>`标签中添加以下内容: ``` <dependency> <groupId>org.junit</groupId> <artifactId>junit-bom</artifactId> <version>5.x.x</version> <!-- 替换为你想要使用的JUnit 5版本 --> <type>pom</type> <scope>import</scope> </dependency> ``` 对于Gradle项目,可以在`dependencies`块中添加以下内容: ``` dependencies { testImplementation platform('org.junit:junit-bom:5.x.x') // 替换为你想要使用的JUnit 5版本 testImplementation 'org.junit.jupiter:junit-jupiter-api' // 添加其他所需的JUnit 5模块 } ``` 添加JUnit-BOM之后,你可以使用JUnit 5的各种功能,例如编写和运行JUnit单元测试。你可以使用`@Test`注解来标记测试方法,并使用JUnit提供的各种断言和注解来编写强大的单元测试。 通过引用JUnit-BOM,你可以确保你的项目使用与JUnit 5兼容的版本,并且可以轻松管理依赖关系。这使得在不同的项目中使用JUnit 5变得更加简单和一致。 JUnit-BOM的详细信息可以在JUnit官方文档中找到。 JUnit是一个用于编写和运行可重复自动化测试的Java单元测试框架。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值