在github上下载相对应的jar包
JUnit下载

在idea中将jar包导入


安装JUnit插件后重启
创建JUnit测试
在类名上按住alt+insert,点击Junit Test

| 注解 | 作用 |
|---|---|
| @Test | 这个注解说明依附在 JUnit 的 public void 方法可以作为一个测试案例。 |
| @Before | 有些测试在运行前需要创造几个相似的对象。在 public void 方法加该注解是因为该方法需要在 test 方法前运行。 |
| @BeforeClass | 在 public void 方法加该注解是因为该方法需要在类中所有方法前运行。 |
| @AfterClass | 它将会使方法在所有测试结束后执行。这个可以用来进行清理活动。 |
| @Ignore | 这个注解是用来忽略有关不需要执行的测试的。 |

除了Assert.assertEquals()方法外,Assert还有许多其他方法常用于单元测试
| 方法名 | 功能 |
|---|---|
| assertNull(java.lang.Object object) | 检查对象是否为空 |
| assertNotNull(java.lang.Object object) | 检查对象是否不为空 |
| assertEquals(long expected, long actual) | 检查long类型的值是否相等 |
| assertEquals(double expected, double actual, double delta) | 检查指定精度的double值是否相等 |
| assertFalse(boolean condition) | 检查条件是否为假 |
| assertTrue(boolean condition) | 检查条件是否为真 |
| assertSame(java.lang.Object expected | 检查两个对象引用是否引用同一对象(即对象是否相等) |
| assertNotSame(java.lang.Object unexpected, java.lang.Object actual) | 检查两个对象引用是否不引用统一对象(即对象不等) |
@Before
在某一个方法中,加入了@Before注解之后,那么这个方法中的功能会在测试方法执行前先执行,一般会在@Before修饰的方法中加入一些申请资源的代码,比如:申请数据库,申请IO资源
@After
在某一个方法中,加入了@After注解之后,那么这个方法中的功能会在测试方法执行执行后执行,所以一般在@After修饰的方法中埃及如:释放资源的代码,,比如释放数据库资源,释放IO资源,释放网络资源。
代码示例:

运行结果

1:被声明为@beforeClass与@AfterClass的方法必须为public static void方法
2:即使beforeClass异常,afterClass仍然执行
3:@brforeClass和@AfterClass在整个程序运行中只执行一次,而@before与@after依赖于执行方法的次数
package test.JunitPac;
import JunitPac.CalSum;
import org.junit.*;
/**
* CalSum Tester.
*
* @author
* @version 1.0
* @since 11,9, 2022
*/
public class CalSumTest {
@BeforeClass
public static void BeforeClass1() throws Exception {
System.out.println("在test进行之前");
}
@Test
public void testAdd1() throws Exception {
int res = CalSum.add(4, 5);
Assert.assertEquals(res, 9);
System.out.println("执行函数2");
}
@Test
public void testAdd2() throws Exception {
int res = CalSum.add(5, 9);
Assert.assertEquals(res, 14);
System.out.println("执行函数2");
}
@AfterClass
public static void AfterClass() throws Exception {
}
}
运行截图:

使用try catch环绕
public class CalSum {
public static void count(int num) throws IllegalAccessException {
if (num < 0) {
throw new IllegalAccessException("valid num");
}
}
}
public class CalSumTest {
@Test
public void testException() throws Exception {
try {
CalSum.count(-1);
} catch (IllegalAccessException e) {
}
}
}
运行截图

在Test中加入expected
public class CalSum {
public static void count(int num) throws IllegalAccessException {
if (num < 0) {
throw new IllegalAccessException("valid num");
}
}
}
public class CalSumTest {
@Test(expected = IllegalAccessException.class)
public void testException() throws Exception {
CalSum.count(-1);
}
}
运行截图

Junit 提供了一个暂停的方便选项。如果一个测试用例比起指定的毫秒数花费了更多的时间,那么 Junit 将自动将它标记为失败。timeout 参数和 @Test 注释一起使用。
public class CalSum {
public static void TimeOut(){
while(true) {
}
}
}
public class CalSumTest {
@Test(timeout = 1000)
public void testException() throws Exception {
CalSum.TimeOut();
}
}
运行截图:
