注意信息是必须的,而且这个输出是格式化过的。
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertAll;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTimeout;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.verify;
public class Junit5AssertTest {
/**
- assertEquals比较两个值是否相同
*/
@Test
void fun1(){
assertEquals(2, 2);
//当不相等时,会打印出第三个参数
assertEquals(4, 5, “不相等”);
}
/**
- assertTrue 判断括号里面的参数是否为true
*/
@Test
void fun2(){
assertTrue(‘a’ < ‘b’, “错误”);
}
//定义一个person对象,Person类里面有两个参数lastName,firstName
private static Dept dept = new Dept(“RESEARCH”,“NewYork”);
/**
-
assertAll()方法用于将多个测试语句放在一个组中执行,组中若有一个测试语句不通过,则这个组将会一起报错
-
方法中第一个参数:组名称
-
方法中第二个参数:组测试语句
*/
@Test
void groupedAssertions() {
assertAll(“dept”,
() -> assertEquals(“RESEARCH”, dept.getDname()),
() -> assertEquals(“NEWYORK”, dept.getLoc())
);
}
/**
-
assertAll()方法也可以嵌套多个assertAll()方法
-
其中嵌套的多个测试组,这些组只会打印出这个组和父组的错误,对其他的组没有影响
*/
@Test
void dependentAssertions() {
assertAll(“properties”,
//第一个测试组
() -> {
String dname = dept.getDname();
assertNotNull(dname);
assertAll(“dname”,
() -> assertTrue(dname.startsWith(“R”)),
() -> assertTrue(dname.endsWith(“H”))
);
},
//第二个测试组
() -> {
String loc = dept.getLoc();
assertNotNull(loc);
assertAll(“loc”,
() -> assertTrue(loc.startsWith(“N”)),
() -> assertTrue(loc.endsWith(“k”))
);
}
);
}
/**
-
assertThrows()可以用来判断lambda表达式中的代码抛出的异常
-
比如下面案例就是测试了抛出异常的信息是否相同
-
参数:
-
1:异常类声明
-
2:测试代码Lambda表达式
*/
@Test
void exceptionTesting() {
Throwable exception = assertThrows(IllegalArgumentException.class, () -> {
try {
System.out.println(1 / 0);
}catch (Exception e){
throw new IllegalArgumentException(“非法的参数异常”);
}
});
assertEquals(“非法的参数异常”, exception.getMessage());
}
/**
-
assertTimeout()对方法执行时间进行测试
-
实例中执行的代码部分必须在2分钟之内执行完毕,否则测试不通过
*/
@Test
void timeoutNotExceeded() {
assertTimeout(Duration.ofMinutes(2), () -> {
System.out.println(33+44);
});
}
/**
-
assertTimeout()还可以接受一个返回值(泛型 T)
-
被测试代码如果通过测试就返回一个值,这个值被assertTimeout()方法返回
*/
@Test
void timeoutNotExceededWithResult() {
String actualResult = assertTimeout(Duration.ofMinutes(2), () -> {
return “haha”;
});
assertEquals(“haha”, actualResult);
}
/**
- assertTimeout()毫秒案例
*/