Java Junit单元测试(入门必看篇)

1 篇文章 0 订阅
1 篇文章 0 订阅

Hi i,m JinXiang


⭐ 前言 ⭐

本篇文章主要介绍单元测试工具Junit使用以及部分理论知识

🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁

🍉博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言


目录

什么是Junit单元测试?

为什么要使用Junit单元测试?

Junit单元测试的使用:

1、注解:

2、用例的执行顺序

3、测试套件


什么是Junit单元测试?

JUnit 是一个 Java 编程语言的单元测试框架。JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一。所谓 xUnit,就是一套基于测试驱动开发的测试框架,它的机制:将程序 预期的结果与程序运行的最终结果进行比对,确保对结果的可预知性。

单元测试是一个对单一实体(类或方法)的测试

为什么要使用Junit单元测试?

在刚刚接触到Junit的时候有一个这样的问题,进行测试的话可以使用main函数,那为什么要使用junit?

总结:有以下几点

  • Junit单元测试可单个多个运行,多个共享数据
  • 有很多注解,可以在之前...之后运行
  • 比main代码少一点
  • 断言测试预期结果

最重要的是规范以及方便,main写完测试完后 都是注释或者直接删掉,而Junit不需要

Junit单元测试的使用:

1、注解:

Junit提供了非常强大的注解功能,通过@Test注解修饰到方法上,该方法就变成了一个测试方法,执行当前类时,会自动的执行该类下所有带@Test注解的用例

在使用这些Junit提供的注解时,需要在pom.xml文件中进行配置:

@Test注解示例:

除了@Test注解外,还有以下常用注解:

  1. @Before 注解:与junit3.x中的setUp()方法功能一样,在每个测试方法之前执行;
  2. @After 注解:与junit3.x中的tearDown()方法功能一样,在每个测试方法之后执行;
  3. @BeforeClass 注解:在所有方法执行之前执行;
  4. @AfterClass 注解:在所有方法执行之后执行;
  5. @Test(timeout = xxx) 注解:设置当前测试方法在一定时间内运行完,否则返回错误;
  6. @Test(expected = Exception.class) 注解:设置被测试的方法是否有异常抛出。抛出异常类型为:Exception.class;
  7. @Ignore 注解:注释掉一个测试方法或一个类,被注释的方法或类,不会被执行。

参考代码 and 运行结果

2、用例的执行顺序

如下图所示,测试用例的执行并不会按照我们编写代码的顺序来执行:

如果在实际测试中,我们需要完成连贯的多个步骤的测试,是需要规定测试用例执行的顺序的,可以通过@order注解来实现排序:

  1. 先使用注解说明当前类下所有的用例需要使用@Order注解来进行排序(注意:该注解必须要用在类上)
  2. 然后通过@Order来指定用例的具体顺序

调用注解,实现排序效果

调试结果展示:

简单来说:Java中的Order注解是用来控制多个Bean的加载顺序的。

3、测试套件
什么是测试套件?

当我们一个类中有多个测试用例时,我们不可能挨个去运行,那样将会很耗费时间,这时我们就需要测试套件来指定类或者指定包名来运行类下或者包下的所有测试用例。

如果要使用测试套件,首先我们需要先创建一个类,通过@Suite注解标识该类为测试套件类(而不是测试类)

在开始操作前,我们需要对Junit5进行配置suite:

原因:单元测试中有部分是不希望自动执行的,仅有部分单元测试希望在内网http://10.0.0.65/ 服务器上自动运行,因此希望配置suite 以解决部分执行问题。

junit5 低版本中没有suite,目前我们springboot默认带的junit5 需要升级)

为什么要使用suite?(使用suite的好处)
  1. 单元测试可分组管理
  2. 进行测试间的编排顺序

suite的使用方法:(在pom中配置suite)

学会配置suite之后,Java中的大部分注解都可以用以下方法进行配置!


1. 在web 应用中引入junit5

 <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.junit</groupId>
                <artifactId>junit-bom</artifactId>
                <version>5.8.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

2. 引入suite的包


 <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite-api</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite-engine</artifactId>
        </dependency>

3. 代码使用suite

package com.wdtrip.wdpromotion;
import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;

@Suite
@SelectClasses({TestCustomPage.class,
        TestEbkActivity.class
})
public class TestSuiteOne {
}

4. 在pom文件的build中配置需要执行的suite

  <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <includes>
                        <include>com.wdtrip.wdpromotion.TestSuiteOne</include>
                    </includes>
                </configuration>
            </plugin>



总结不易,希望uu们不要吝啬亲爱的👍哟(^U^)ノ~YO!!如有问题,欢迎评论区批评指正😁

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要测试图书管理列表,首先需要创建一个测试类,比如叫做BookManagerTest,用于测试图书管理列表的方法。在这个测试类中,你需要使用JUnit的注解@Test来标记测试方法。 接下来,你需要编写测试方法testAddBook()、testUpdateBook()、testDeleteBook()、testFindAllBooks()分别用于测试添加图书、更新图书、删除图书和查询所有图书的方法。在这些方法中,你需要创建一个BookManager实例,并调用它的相应方法,来添加、更新、删除和查询图书。然后,你需要使用JUnit提供的断言方法来验证操作结果是否符合预期。 下面是一个简单的示例代码: ``` import org.junit.Test; import static org.junit.Assert.*; public class BookManagerTest { private BookManager bookManager = new BookManager(); @Test public void testAddBook() { Book book = new Book(1, "Java入门", "张三", 50.0); boolean result = bookManager.addBook(book); assertTrue(result); } @Test public void testUpdateBook() { Book book = new Book(1, "Java入门", "张三", 60.0); boolean result = bookManager.updateBook(book); assertTrue(result); } @Test public void testDeleteBook() { boolean result = bookManager.deleteBook(1); assertTrue(result); } @Test public void testFindAllBooks() { List<Book> books = bookManager.findAllBooks(); assertEquals(2, books.size()); } } ``` 在这个示例中,我们创建了一个BookManagerTest类,并在其中定义了四个测试方法,分别测试添加、更新、删除和查询所有图书的方法。在每个方法中,我们调用了BookManager类的相应方法,来执行操作。然后,我们使用JUnit提供的断言方法来验证操作结果是否符合预期。在这个例子中,我们验证了添加、更新、删除和查询所有图书的操作是否成功。 需要注意的是,在编写单元测试时,应该尽可能地覆盖所有可能的情况,比如添加一个已经存在的图书、更新一个不存在的图书、删除一个不存在的图书等等。这样可以保证代码的质量和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值