单元测试是开发写还是测试写

核心提示作为一名java开发者,相信你或多或少的接触过单元测试,对于测试来讲它是一门能够区分专业开发人员与业余开发人员的重要学科,这篇文章将对java中最常见的一个单元测试框架junit进行一个梳理和讲解。如果你之前没接触过,那么就通过这篇文章进行

作为一名java开发人员,我相信你或多或少接触过单元测试。至于测试,它是区分专业开发人员和业余开发人员的重要学科。本文将对java中最常见的单元测试框架junit进行梳理和解释。如果你之前没接触过,那就通过这篇文章做个学习吧。如果你是测试老手,也希望这篇文章能加深你的印象。

首先,为什么需要单元测试?

在通常的开发中,一个项目往往包含大量的方法,可能有数千个。如何保证这些方法产生的结果是我们想要的?当然,可以想到的最简单的方法之一是,我们通过System.out输出我们的结果,看看它是否符合我们的需要。但是,我们不能总是在项目中输出所有这几千个方法。这太无聊了。这个时候我们的单元测试框架junit就可以很好的解决这个问题。

junit是如何解决这个问题的?答案在于内在的断言机制,它可以将我们的预期结果与实际结果进行比较,确定是否符合我们的预期。相信这一点,你已经迫不及待想了解junit了。我们直接通过一个案例来分析一下这个机制。

第二,从案例来看。

1.准备工作

Junit4是一个单元测试框架。既然是框架,就意味着jdk没有给我们提供api,所以我们需要在这里导入相关的依赖关系。对于IDEA来说,在构建Maven项目时,会自动直接添加相关的依赖项。否则,您可以手动添加它们:

这里的版本是4.12。当然还有最新版本。可以手动选择。这里选择的是4的版本。

2.案例

这里要测试的函数超级简单,就是加减乘除的验证。

然后让我们看看如何使用junit进行测试。

以上是我们的单元测试,需要遵循规则:

1.每个测试方法都用@Test修饰。

2.每个测试方法都必须用public void来修饰。

3.每个测试方法都不能带有参数。

4.测试代码和源代码位于两个不同的项目路径中。

5.测试类的包应该与被测试的类一致。

6.测试单元中的每个方法必须是独立可测试的。

使用单元测试时,需要以上六个规则。当然,junit也建议我们在每个测试方法名前加上test前缀,表明这是一个测试方法。

AssertEquals是一个带有两个参数的断言规则。第一个参数表示我们的期望值,第二个参数表示实际运行值。然而,junit5对这些做了一些改变,我们将在下面的文章中具体介绍。

当我们运行测试类时,我们将运行每一个测试方法。我们也可以运行某一个,只需右键点击对应的测试方法运行即可。如果运行成功的编辑器的控制台不会得到错误消息,如果得到,它将得到诸如失败之类的信息。

3.操作过程

在上面的每一种测试方法中,代码都相当简单,只要一句话。现在我们来分析一下这个测试的过程是怎样的:

在上面的代码中,我们使用了两种测试方法,junit运行全过程方法。我们可以运行它,将会出现以下结果:

从以上结果,我们画个流程图就知道了:

相信这个过程应该是可以理解的。如果我们使用了其他一些框架,如SSM,我们通常会添加预处理代码,如在之前打开数据库,以及在之后关闭流等相关代码。

以上案例如果能理解的话,基本上就是一个介绍。其实这个案例比较简单。相信大家聪明的头脑都能看懂。让我们来看看junit中的评论。

三。笔记

对于@Test,有很多参数可供我们选择。让我们互相了解一下

1、测试

此参数指示我们预期的异常。比如除法,我们1/0会有一个ArithmeticException异常,所以这里@Test。你还是可以通过这次组织测试的。

2、测试

此参数表示如果测试方法没有在指定的超时时间内完成,它将强制停止。

3 、@忽略

这个评论基本上是不必要的,它意味着修改后的测试方法会被测试运行人员忽略。

4 、@RunWith

更换测试转轮。

四。测试套

文章开头我们提到,如果我们的项目有几千个方法,那么这个时候是不是也应该有几千个测试方法?这样junit不如System.out怎么办?现在,我们来了解一下测试嵌套的方法。他的作用就是我们封装测试类,也就是嵌套测试类,只要运行测试套件就可以运行所有的测试类。、

让我们使用测试套件将这些测试类嵌套在一起。

也很简单。让我们来看看参数设置。

动词 (verb的缩写)参数化设置

什么是参数化设置?在初始代码中,我们看到测试加法的时候是1+1,但是如果要测试多组数据呢?你不能一个一个的输入然后运行测试。这时候我们可以先配置好需要测试的数据。

这时候我们只需要选择相应的值进行测试,避免了手工一个一个的输入。

对于junit测试,有很多常用的方法。要深入了解,只能放在后面的课程里。今天到此为止吧。

 
友情链接
鄂ICP备19019357号-22