您现在的位置是:首页 >技术教程 >Junit常见用法网站首页技术教程
Junit常见用法
一.Junit的含义
Junit是一种Java编程语言的单元测试框架。它提供了一些用于编写和运行测试的注释和断言方法,并且可以方便地执行测试并生成测试报告。Junit是开源的,也是广泛使用的单元测试框架之一
二.Junit项目的创建
(1)先创建一个 普通的maven项目
(2)然后在pom.xml文件里添加一些Junit的一些相关依赖
<dependencies>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.11.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.9.1</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.9.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.9.1</version>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-suite</artifactId>
<version>1.9.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite -->
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-suite</artifactId>
<version>1.9.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.9.1</version>
<scope>test</scope>
</dependency>
</dependencies>
三.Junit常用注解
1.@Test 表示执行此测试用例,使用@Test框架,我们不需要在类里创建mian方法,然后在main方法里调用测试方法,可以直接在类里定义测试方法
@Test
void test1()
{
System.out.println("执行测试用例1");
}
2.@disabled 表示不执行此测试用例
3.@BeforeAll @AfterAll @BeforeEach @AfterEach
(1)@BeforeAll 在所有的测试用例执行之前开始执行且只执行一次,因此它的方法应该是属于类的,是一个静态方法。
(2)@AfterAll 在所有测试用例执行之完开始执行且只执行一次,因此它的方法也是属于类方法,是一个静态方法。
(3)@BeforeEach在每个测试用例执行前开始执行
@BeforeEach
void beforeeach()
{
System.out.println("这是beforeeach的语句");
}
(4)@AfterEach在每个测试用例执行完执行
@AfterEach
void aftereach()
{
System.out.println("这是aftereach语句");
}
三.junit参数传递
1.单种类型的参数
第一个注解@ParameterizedTest此注解作用在方法上,表示此方法支持多个传入多个参数
第二个注解@ValueSource()此注解表示传入一组同类型的数据,例如ints={1,2,3}表示传入一组int类型的数据,strings={"小明","小凯"}表示传入一组string类型的数据
但是这种方式只能传递一种类型的参数,如果我们传多种参数就会报错
2.多种类型的参数
(1)Csv
注解@CsvSource({"第一组数据","第二组数据"},不同组数据之间用逗号分割,
一组数据
多组数据
(2)Csv文件
读取文件里的参数,文件里面的参数以逗号分割
@CsvFileSource(resources="文件名")
在resources底下建立一个test7.csv文件
2.方法
@MethodSource("方法名")
定义一个静态方法,返回类型为Stream对象,内部调用Stream.of()方法
si
3.测试套件 注解@Suite
(1)通过类名运行测试用例
@SelectClasses(),括号里面用于指定类名
(2) 通过包名运行测试用例
@SelectPackages(value= )用于指定包名, 注意包名底下的测试类必须是XXXTest的格式,且Suittest这个类不能在要指定的包名底下
指定单个包名
指定多个包名
四.assert断言
只有断言通过测试用例才通过,
1.Assertions.assertEquals(期待值,真实值)当期待值和真实值一样时测试用例才通过,当期待值和真实值不一样时会抛出异常
2. Assertions.assertNotEquals(期待值,真实值)当期待值和真实值不一致时,测试用例才通过,否则会抛出异常
@ParameterizedTest
@ValueSource(ints={2})
void test6(int num)
{
Assertions.assertNotEquals(1,num);
}
3. . Assertions.assertNull(num),只有num为null时测试用例才通过,否则会抛出异常
五.测试用例执行的顺序
大家来想一个问题,这三个测试用例那个先执行?是按一定照从上到下的顺序吗?
其实不是的,junit有自己的一套执行顺序的算法
但我们可以自己指定其测试用例执行顺序
(1)按照自己指定的顺序执行测试用例
(2) 按照任意顺序执行测试用例