Junit——白盒测试

Java单元测试框架,主要用于测试Java程序中的各个单元。

1.验证代码功能是否符合预期

2.及时 发现+修复 代码中的缺陷,提高代码质量

入门

最早学习java,代码对不对,通过main 方法运行,观看结果是否符合预期。

java 复制代码
package hello;

public class ArithTestUtil{

	public static void main(String[] args) {
		int result = add(1,2);
		System.out.println(result);
	}
  // 重载加法方法 - 两个整数加法  A
	public static int add(int i, int j) {
		return i+j;
	}
	   // 重载加法方法 - 两个浮点数加法   B
    public static double add(double a, double b) {
        return a + b;
    }

    // 重载加法方法 - 三个整数加法  C
    public static int add(int a, int b, int c) {
        return a + b + c;
    }
}

但是问题来了,我的add方法 A 参数l两个,以后需要浮点方法B ,三个参数方法C ,怎么测试,

还是要写到main方法中,以后很多方法情况下 结果对不对要一一对应查看,肉眼久了不废了吗。这时候 使用junit 测试框架来进行测试工作

任何开发都是先导包 junit-4.9.jar【以后学到springboot才能解脱】

java 复制代码
package hello;

import org.junit.Test;

import junit.framework.Assert;

public class ArtichTestUtilTest{

    @Test
    public void testAdd() {
    	int result = ArithTestUtil.add(1, 2);
    	Assert.assertEquals(result, 3);
     }
    @Test
    public void testAdd2() {
    	int result = ArithTestUtil.add(1, 2,,3);
    	Assert.assertEquals(result, 5);
    }
    @Test
    public void testAdd3() {
    	doubleresult = ArithTestUtil.add(1.5, 2.3);
    	Assert.assertEquals(result, 3.8);
    }

}

鼠标在方法上,右键运行对应的测试方法。在类上,可运行该类中所有的测试方法。

注意:运行成功显示绿色,失败显示红色 +提示你的代码 类名+ 错误的代码行号

eclipse 类似这样

idea 类似这样 图只是参考,实际测试时 数值 或调用方法随意写的

junit的好处

对比前面所说,测试放到main方法中。用juint后,发现:

1.新增的测试,对原测试不影响

2.此时失败,会变化立马看出来结果\效果

相关注解

  • 测试类 :使用 @Test 注解标记的类。
  • 测试方法 :使用 @Test 注解标记的方法,用于执行具体的测试。
  • 断言 :使用 JUnit 提供的断言方法(如 assertEquals、assertTrue 等)来验证测试结果。

========================================================================

  • @Test:标记测试方法。
  • @Before和 @After:分别在测试方法之前和之后执行操作。
  • @BeforeEach 和 @AfterEach:分别在每个测试方法之前和之后执行操作。 JUnit 5
  • @BeforeAll 和 @AfterAll:分别在所有测试方法之前和之后执行操作。 JUnit 5
  • @BeforeClass 必须是 static 方法** **/ /只在所有测试方法之前执行一次

会发现有的注解 的作用一样啊。包不一样,列出说明学会一种,另一种方法调用照葫芦画瓢即可。

TestSuite

之前案例中只有一个 测试类 ArtichTestUtilTest。往后多测试类如 Test1,Test2 ...,开发者手动去挨个点击执行 ,比较麻烦。

java 复制代码
//在 JUnit 4 中,使用 @RunWith 和 @Suite.SuiteClasses 来定义测试套件

@RunWith(Suite.class)
@Suite.SuiteClasses({TestClass1.class, TestClass2.class})
public class MyTestSuite {
    // 测试套件运行时,TestClass1 和 TestClass2 中的所有测试都会被执行
  // MyTestSuite 本身不含任何测试方法,测试方法来自于 TestClass1 TestClass2
}



//JUnit 5 中的 Test Suite 用法
@Suite
@SelectClasses({TestClass1.class, TestClass2.class})  // 选择特定的测试类
public class MyTestSuite {
    // 这个类本身不包含任何测试方法,所有的测试都来自于 TestClass1 和 TestClass2
}


@Suite
@SelectPackages("com.hello.tests")  // 选择整个包中的所有测试类
public class MyTestSuite {
    // 不需要测试方法,所有的测试都来自 com.hello.tests 包
}

maven项目使用

对比前面的独立jar包,现在maven里如何使用

1.pom.xml中加上引用包

XML 复制代码
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.13.2</version>
    <scope>test</scope>
</dependency>

2.同上

相关推荐
麻瓜code4 小时前
秒杀优化三连:Lua + 阻塞队列 + Redis Stream,响应从 3.4 秒到毫秒级
redis·junit·lua
努力努力再努力wz2 天前
【Lua 入门系列】从顺序执行到分支与循环:一文理解 Lua 控制结构、作用域与跳转规则
junit·单元测试·lua
努力努力再努力wz3 天前
【Lua入门系列】从动态类型到变量作用域:彻底理解 local、全局变量与跨文件访问
开发语言·junit·lua
aloha_7895 天前
Java 基础、集合、异常与 JUnit 5 速查
java·junit·sqlserver
极小狐16 天前
MR 里测试摘要空白、覆盖率不显示?JUnit 与覆盖率配置 9 步排查
数据库·ci/cd·junit·单元测试·mr·devops·代码覆盖率
Best-Wishes18 天前
科来网络分析系统(技术交流版)使用说明书
开发语言·junit·php
贾宝玉的玉宝贾18 天前
FreeSWITCH 简单图形化界面 70 - 监听/密语的lua脚本
开发语言·junit·lua·voip·freeswitch·sip·ippbx
企业数字化笔记19 天前
多租户系统从哪里开始设计?租户身份、数据隔离、权限与套餐的整体方案
java·spring boot·后端·junit
众链网络23 天前
大客流票务系统怎么防超卖:库存并发、候补队列与幂等设计的工程取舍
junit·架构
深念Y1 个月前
rime-雾凇拼音-配置记录
linux·junit·软件·拼音·kde