1.单元测试
单元测试关注单一的类,不需要关注数据库、web服务等组件。目的是检查这个类中的代码是否按照期望正确运行

2.被测系统
表示正在被测试的系统,可以指一个类(或者整个系统)

3.测试依赖组件
DOC,被测系统所依赖的组件

4.测试替身
一个系统会依赖多个外部对象,我们用一些功能较为简单且行为和实际对象类似的假对象作为SUT的依赖对象。包括test stub/fake object/mock object/dummy object/test spy
mock object:用于模拟实际的对象,并且能够校验对这个mock object的方法调用是否符合预期
test spy:可以包装一个真实的java对象,并返回一个包装后的新对象,若没有特别的配置的话,对这个新对象的所有方法调用,都会委派给实际的java对象。

mock和spy的区别:mock是无中生有的,生出完全虚拟的对象,他的所有方法都是虚拟的;而spy是在现有类的基础上包装了一个对象,即如果我们没有重写spy的方法,那么这些方法的实现其实都是调用的被包装的对象的方法。

5.test fixture
运行测试程序所需要的先决条件,不单单指的是数据,同时包括对被测对象的配置
JUnit4之前是通过setUp/TearDown方法完成,现在使用@Before代替setUp(在每个测试方法运行前都会被调用),@After代替tearDown

JUnit4在每个被测试的方法上标注@Test注解,方法签名可以是任意的。

6.测试套件
测试套件可以将对各测试用例组装成一个测试套件,批量运行
@RunWith:指定特殊的运行器

7.JUnit4

注解:
@Test(expected = Exception.class)
表示预期会抛出Exception.class的异常
@Ignore:表示尚未完成,暂不参与此次的测试。这样批量测试的时候不会失败
@Test(timeout=100):预期执行不超过100ms,控制死循环
@Before:表示在每一个测试方法之前运行,可进行初始化之类的操作
@After:在每个测试方法之后运行,可进行资源释放,回收内存之类的操作
@BeforeClass:表示该方法只执行一次,并且在所有方法之前执行,可使用连接数据库操作
@AfterClass:该方法只执行一次,且在所有方法之后执行,可使用关闭数据库操作。

8.Mocikto
Java测试框架
mock依赖的类、对象、资源,修改返回值及异常

org.mockito
mockito-core
test

8.1mock对象
A a = mock(A.class);
8.2方法调用的返回值
when(a.method).thenReturn(b);
8.3方法调用返回异常
doThrow(new Exception).when(a.method);
8.4调用方法参数匹配
when(a.method2(anyIn())).thenReturn(“ss”);
8.5验证方法调用的次数
a.method©;
verify(a, times(1)).method©;
8.6验证行为
a.method©;
verify(a).method©;

注解:
@InjectMocks:被单元测试的类
@Mock:单元测试的类中的依赖
@Before:在单元测试之前,执行Mockito的注解扫描,并注入依赖(或者通过注解 RunWith 的方式:@RunWith(SpringJUnit4ClassRunner.class)),有些情况下,我们可能需要 Spring 启动
@SpringBootTest


Mockito模拟静态方法
借助PowerMock
@RunWith(PowerMockRunner.class)
PowerMockito.mockStatic(StaticTest.class);
PowerMockito.when(StaticTest.static1()).thenReturn(“static”);

单元测试(Unit Test)相关推荐

  1. ABAP和Java的单元测试Unit Test

    ABAP ABAP class单元测试的执行入口,CLASS_SETUP, 是硬编码在单元测试框架实现CL_AUNIT_TEST_CLASS里的. 待执行的单元测试方法通过CL_AUNIT_TEST_ ...

  2. Rails测试《二》单元测试unit test

    单元测试 单元测试针对model,主要是测试model中的业务规则,测试model中的验证validates规则. 单元测试的文件存放在test/unit文件夹,针对user的model的单元测试文件 ...

  3. 单元测试(Unit Test)学习

    由于我们组的项目已经进行到了中期,项目测试开始陆续进行了,作为一款应用软件,单元测试就显得尤为重要,以下是关于单元测试学习的一些笔记: 一.单元测试的基本概念 单元测试是对软件的基本组成单元/模块进行 ...

  4. PHPUnit简介及使用(thinkphp5的单元测试安装及使用)

    PHPUnit简介及使用(thinkphp5的单元测试安装及使用) 一.总结 一句话总结:直接google这个phpunit(how to use phpunit),然后去官网看使用样例和手册,那些英 ...

  5. 如何测试程序是否_软件开发过程中,如何进行自动化测试?Unit Test 和 UI Test

    1. 简介 GXtest是基于专门为GeneXus平台开发的应用程序提供的自动化测试解决方案. 我们强调"解决方案"和"自动化"两个词: 解决方案: GXtes ...

  6. [转]Angular 单元测试讲解

    Angular_单元测试 测试分类 按开发阶段划分 按是否运行划分 按是否查看源代码划分 其他 ATDD,TDD,BDD,DDD ATDD TDD BDD DDD Angular单元测试 Karma的 ...

  7. 使用VS2012内建的C++测试架构进行单元测试

    前言 在软件开发的过程中,单元测试(Unit testing)是一个重要的coding步骤,可以让你的程序代码质量大幅提升.协助你进行良好的程序架构设计,单元测试是针对程序单元(软件设计的最小单位)来 ...

  8. javascript 代码_如何开始对JavaScript代码进行单元测试

    javascript 代码 We all know we should write unit tests. But, it's hard to know where to start and how ...

  9. python中test是什么意思_Python unittest 之一: 什么是单元测试

    unittest 是 Python自带的 单元测试框架. 那么我们首先需要知道什么是单元测试. 单元测试 也是测试活动的一种. 通常我们把 单元测试 unit test. 集成测试 Integrati ...

  10. golang 单元测试和性能测试

    单元测试 单元测试(Unit Tests, UT) 是一个优秀项目不可或缺的一部分,特别是在一些频繁变动和多人合作开发的项目中尤为重要.你或多或少都会有因为自己的提交,导致应用挂掉或服务宕机的经历.比 ...

最新文章

  1. 自行车为什么前轮和后轮受到的摩擦力相反呢 自行车前轮后轮转动方向一样 自行车运动原理...
  2. 张高兴的 Windows 10 IoT 开发笔记:FM 电台模块 KT0803L
  3. iOS 代码规范总结
  4. Tech Ed上Windows 7值得关注的课程
  5. 用java读取properties文件--转
  6. android绑定java,Java-android数据绑定-找不到类android.view.data
  7. Excel共享工作簿
  8. 私有化仓库的 GO 模块使用实践
  9. 三维重建:点绕特定轴旋转公式
  10. Lecture 19 Shortest Paths III
  11. String.format()用法
  12. 冬至了,回家羊肉。:)
  13. mysql锁表查询_如何通过自动增加索引,实现数据库查询耗时降低50%?
  14. 遗传算法(geatpy)
  15. 怎么更新计算机显卡,显卡驱动怎么更新
  16. CEC2018:动态多目标测试函数DF6~DF9的PS及PF
  17. 【题目精刷】2022诺瓦-数字IC设计
  18. 用欧拉公式推导三角函数所有公式包括 倍角公式-半角公式-和差化积-积化和差...
  19. linux red hat 8.0 root密码破解
  20. 为了疫情防控,发短信可查自己的行踪轨迹,是什么技术在帮忙?

热门文章

  1. java基础之HashMap源码分析
  2. Windows串口编程
  3. python集合是可变类型吗_python集合是可变类型吗
  4. html中从右往左写的文字格式,用Word 文档怎么更改写字方向从右到左写?
  5. 【商城应用】商城APP首页方案设计
  6. Beosin成都链安关于公司名称混淆声明
  7. Word简历中如何插入头像?
  8. leetcode 1475.商品折扣后的最终价格(js)
  9. web自动化文件上传--Pywin32库和WinSpy工具
  10. 微信整了一个新功能,专治各种借钱不还