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 提供的断言方法(如 assertEqualsassertTrue 等)来验证测试结果。

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

  • @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.同上

相关推荐
艺杯羹12 天前
Maven 之 JUnit 测试体系构建全解析
java·junit·maven
转码的小石13 天前
深入Java大厂面试:从Spring框架到微服务架构的技术解析
java·spring boot·spring cloud·微服务·junit·spring security·hibernate
专注代码七年15 天前
Spring Boot单元测试终极指南:从环境搭建到分层测试实战
java·spring boot·junit
xiaoxi66616 天前
用好 JUnit 5 的高级特性:提升单测效率和质量
junit
什么都想学的阿超1 个月前
【Redis系列 03】掌握Redis编程艺术:事务、管道与Lua脚本完全指南
redis·junit·lua
爱瑞瑞1 个月前
Junit5测试类编写笔记
junit
黄暄1 个月前
分布式锁优化:使用Lua脚本保证释放锁的原子性问题
java·redis·分布式·后端·junit·lua
cxh_陈1 个月前
org.junit.runners.model.InvalidTestClassError:此类问题的解决
java·开发语言·junit
.生产的驴1 个月前
SpringBoot 执行Lua脚本 服务端执行 减少性能损耗 优化性能 优化连接性能
java·数据库·spring boot·后端·junit·maven·lua
小小数媒成员1 个月前
Unity—lua基础语法
unity·junit·lua