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