java 中的单元测试_浅谈Java 中的单元测试
单元测试编写
Junit 单元测试框架
对于Java语言而言,其单元测试框架,有Junit和TestNG这两种,
下面是一个典型的JUnit测试类的结构
package com.example.demo;
import org.junit.jupiter.api.*;
import static org.junit.jupiter.api.Assertions.*;
@DisplayName("售票器类型测试")
class DemoTest {
// 定义测试的实例
private Demo demo;
// 定义前缀 整个测试类开始执行的地方
@BeforeAll
public static void init(){
}
// 定义后缀,整个测试类完成后执行的操作
@AfterAll
public static void cleanup(){
}
// 定义每个测试用例开始执行前的操作
@BeforeEach
public void create(){
this.demo = new Demo();
}
// 定义在每个测试用例完成后执行的操作
@AfterEach
public void destory(){
}
// 执行测试用例
@Test
@DisplayName("售票后的余额减少")
public void shouldReduceInventoryWhenticketSoldOut(){
}
@Test
public void ming(){
}
}
测试结果如图所示
层次性表达测试用例
测试用例较多的情况下,为了层次性表达测试用例,使用Junit的Nested注解有层次的表达测试用例
package com.example.demo;
import org.junit.jupiter.api.*;
@DisplayName("交易服务测试")
class DemoTest {
@Nested
@DisplayName("用户交易测试")
class Test02{
@Test
@DisplayName("交易检查测试")
public void test01(){
}
}
}
使用Tag标签区分测试用例
在执行Maven打包的时候,使用tage注解,可以有选择的执行一些测试命令
package com.example.demo;
import org.junit.jupiter.api.*;
@DisplayName("交易服务测试")
class DemoTest {
@Test
@DisplayName("售票后额度减少")
@Tag("fast")
public void test01(){
}
@Test
@DisplayName("一次性减少车票")
@Tag("slow")
public void test02(){
}
}
添加相关的插件
maven-surefire-plugin
2.22.0
fast
slow
断言
使用Junit命令进行断言处理
@Test
@DisplayName("售票后额度减少")
@Tag("fast")
public void test01(){
String s = "ming";
Assertions.assertTrue(s.startsWith("ming"));
Assertions.assertTrue(s.endsWith("g"));
Assertions.assertEquals(5, s.length());
}
此时断言错误。
单元测试的目的
提升软件质量
优质的单元测试可以保障,开发质量和程序的健壮性,在大多数互联网企业中,开发工程师,都会频繁的执行测试用例。
促进代码的优化
单元测试是由开发工程师编写和维护的,这会促进开发工程师不断的重新审视自己的代码质量。
提高研发效率
单元测试,虽然占用的大量的时间,但是对后续的联调,集成等,都可以进一步的提高研发的效率。
增加重构的自信
代码重构往往是牵一发而动全身的,当修改底层代码的时候,通过不断的单元测试,可以增加重构的软件的自信。
单元测试的基本原则
单元测试要符合AIR原则。单元测试,符合以下三个原则
1. 自动化
2. 独立性
3. 可重复
单元测试覆盖率
语句覆盖
又称行覆盖(LineCoverage),段覆盖(SegmentCoverage),基本块覆盖(BasicBlockCoverage),这是最常用也是最常见的一种覆盖方式,就是度量被测代码中每个可执行语句是否被执行到了。
判定覆盖
又称分支覆盖(BranchCoverage),所有边界覆盖(All-EdgesCoverage),基本路径覆盖(BasicPathCoverage),判定路径覆盖(Decision-Decision-Path)。它度量程序中每一个判定的分支是否都被测试到了。
条件覆盖
它度量判定中的每个子表达式结果true和false是否被测试到了
路径覆盖
又称断言覆盖(PredicateCoverage)。它度量了是否函数的每一个分支都被执行了
以上就是浅谈Java 中的单元测试的详细内容,更多关于Java 单元测试的资料请关注聚米学院其它相关文章!
java 中的单元测试_浅谈Java 中的单元测试相关推荐
- java布尔类型比较器_浅谈Java中几种常见的比较器的实现方法
在java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题. 通常对象之间的比较可以从两个方面去看: 第一个方面:对象的地址是否一样,也就是是否引用自同一个对象.这种方式可以直接使用& ...
- java null什么意思_浅谈java中null是什么,以及使用中要注意的事项
1.null既不是对象也不是一种类型,它仅是一种特殊的值,你可以将其赋予任何引用类型,你也可以将null转化成任何类型,例如: Integer i=null; Float f=null; String ...
- java 中的排序_浅谈java中常见的排序
浅谈java中常见的排序 学过java的人都知道,排序这一部分初次接触感觉还是有点难以理解,很多地方也会用到.然而,在java中常见的排序方法:冒泡排序,选择排序,插入排序等等.下面就让我们一起揭开他 ...
- java定义byte数组_浅谈java的byte数组的不同写法
(由于篇幅原因阐述的不够详细科学,不喜勿喷). 经常看到java中对byte数组的不同定义,粗略整理的一下: 一个字节(byte)=8位(bit),"byte数组"里面全部是&qu ...
- java 对象之间转换_浅谈java对象之间相互转化的多种方式
浅谈java对象之间相互转化的多种方式,对象,属性,参数,赋值,不支持 浅谈java对象之间相互转化的多种方式 易采站长站,站长之家为您整理了浅谈java对象之间相互转化的多种方式的相关内容. 第一种 ...
- java编程double相乘_浅谈Java double 相乘的结果偏差小问题
看下面的一段代码的运行结果: public class TestDouble { public static void main(String[] args) { double d =538.8; S ...
- python中怎么计数_浅谈python中统计计数的几种方法和Counter详解
1) 使用字典dict() 循环遍历出一个可迭代对象中的元素,如果字典没有该元素,那么就让该元素作为字典的键,并将该键赋值为1,如果存在就将该元素对应的值加1. lists = ['a','a','b ...
- python 中arange函数_浅谈Python中range与Numpy中arange的比较
本文先比较range与arange的异同点,再详细介绍各自的用法,然后列举了几个简单的示例,最后对xrange进行了简单的说明. 1. range与arange的比较 (1)相同点:A.参数的可选性. ...
- python中rstrip用法_浅谈Python3中strip()、lstrip()、rstrip()用法详解
简单来说,三种方法是为了删除字符串中不同位置的指定字符.其中,strip()用于去除字符串的首尾字符,同理,lstrip()用于去除左边的字符,rstrip()用于去除右边的字符 Python中有三个 ...
最新文章
- 【Python培训基础知识】单例模式
- git提交代码遇到fatal: unable to access
- ionic 完美仿微信摇一摇
- java array iterator_java数组遍历——iterator和for方法
- java怎么插入oracle数据库timenstamp,Sybase数据库技术,数据库恢复专家
- “美登杯”上海市高校大学生程序设计赛B. 小花梨的三角形(模拟,实现)
- 【CodeForces - 349B】Color the Fence (贪心,填数)
- Cannot resolve jakarta.validation:jakarta.validation-api:2.0.2
- Red Hat 6.5安装Oracle 10g故障汇总
- 百度中文依存句法分析工具DDParser重磅开源
- AUTOCAD——圆命令
- 入门知识(一)矢量图与位图的区别
- 播放全景视频【一】:用unity Video Player视频播放器来播放360全景视频
- 计算机网络换算方法,网络带宽换算
- 使用二维码——第三方库ZBar和libqrencode的使用
- dell笔记本插上耳机没有声音_笔记本扬声器没声音,但耳机有声音怎么办
- 一文搞懂H264量化原理以及计算过程
- 科技对金融业的告白信,有百融云创的落款
- layui中如何让多个控件在一行显示
- 程序员如何站着每年赚 30w 美金