测试

  • 一,测试分类
  • 二,单元测试Junit,你以为的junit只是@Test注解吗,shallow..
    • 优点:
    • 规范:
    • 断言:
    • 案例demo:
      • junit test case测试类创建,执行测试,结果反馈
      • junit test suite 套娃测试,suite套suite,suite套case
      • 当参数和结果有冲突时,测试具体某个方法

一,测试分类

测试细致分类:

  1. 白盒测试 具体的跑代码,结合功能。
  2. 黑盒测试,测试人员用,从界面来,看界面,功能有没达到要求,需要写文档,每个细节部分要记录到。
  3. 交叉测试,开发人员开发时,相互测试对方的功能。

功能测试:
1. 包括白盒,黑盒
2. 准备测试数据
3. 多环境测试:(测试环境(局域网数据),预发布环境(外网数据),正式环境)

  1. 相同操作系统、相同版本、相同的软件环境(运行环境、代码、jdk、tomcat、mysql…)
  2. 数据库数据不同(预发布环境的数据一般取是最近正式环境的数据)

自动化测试
使用工具,来测试产品。

性能测试(jmeter)、压力测试
响应速度、主要是模拟高并发场景

编写测试报告
各个具体业务流程,截图,具体时间,哪些地方有bug,哪些error,哪些failure记录下来!

bug跟踪系统
用来记录并跟踪bug,当前bug的数量,当前bug经过多长时间才被解决掉,等… 是一套这样的系统,有第三方的,也有公司自己研发的。

对bug数据进行统计,分析,解决。

二,单元测试Junit,你以为的junit只是@Test注解吗,shallow…

优点:

优点:junit包括junit case和junit suite。能够一次性的测试多个方法,或者多个单元测试类,并设置预期的结果。运行的结果是测试run了多少个方法,哪些error, 哪些failure了。

规范:

1.测试方法上必须使用@Test进行修饰
2.测试方法必须使用public void进行修饰,不能带任何的参数
3.新建一个源代码目录用来存放测试代码
4.测试类的包应该和被测试类保持一致
5.测试单元中的每个方法必须独立测试,测试方法间不能有任何的依赖
6.测试类使用Test作为类的后缀
7.测试方法使用test作为方法名的前缀

断言:

测试结果与设置预期的结果对比。


断言
//查看两个数组是否相等。
assertArrayEquals(expecteds, actuals)
//查看两个对象是否相等。类似于字符串比较使用的equals()方法
assertEquals(expected, actual)
//查看两个对象是否不相等。
assertNotEquals(first, second)
//查看对象是否为空。
assertNull(object)
//查看对象是否不为空。
assertNotNull(object)
//查看两个对象的引用是否相等。类似于使用“==”比较两个对象
assertSame(expected, actual)
//查看两个对象的引用是否不相等。类似于使用“!=”比较两个对象
assertNotSame(unexpected, actual)
//查看运行结果是否为true。
assertTrue(condition)
//查看运行结果是否为false。
assertFalse(condition)
//查看实际值是否满足指定的条件
assertThat(actual, matcher)
fail()  让测试失败

案例demo:

junit test case测试类创建,执行测试,结果反馈

这里使用eclipse,java8

  1. 新建普通Java ee项目,并导入junit测试包,build path
  2. 导入



开始编写德莫,求和,除法

package cn.bitqian.demo;/*** @author echo lovely* @date 2020年11月13日 下午6:55:22*/public class MyMath {// sumpublic int add(int a, int b) {return a + b;}// dividepublic int division(int a, int b) {if (b == 0)return b;return a / b;}}

创建junit测试类,包名和src下面的一样,类名在原类名上+Test



上面的下一步

package cn.bitqian.demo;// 静态导入类,可直接用里面的静态方法
import static org.junit.Assert.*;import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;/*** junit test class* @author echo lovely* @date 2020年11月13日 下午6:59:03*/public class MyMathTest {private MyMath math = new MyMath();/*** 1. 测试方法 无参无返* 2. 方法前面加上@Test注解* * 运行测试方法,选中方法,右键run as Junit test 或者 debug as Junit test* 直接右键,会运行所有有@Test注解的方法* Runs 测试了几个方法* Errors 测试方法有问题* Failures 测试方法没达到预期的要求*/// 类加载时执行@BeforeClasspublic static void beforeClass() {System.out.println("init...");}// 每个有@Test方法执行前执行@Beforepublic void before() {// 如获取mybatis的session工厂System.out.println("method before...");}// 每个方法执行之后执行@Afterpublic void after() {// 如关闭mybatis的session工厂System.out.println("method after...");}// 类所有的方法执行完后执行@AfterClasspublic static void afterClass() {System.out.println("all is done...");}// 1秒 内必须出结果,否则测试失败@Test(timeout=1000)public void testAdd() {System.out.println("测试了math类的加法");// 预测值int expected = 2 + 3;// 实际值int actual = math.add(2, 3);// 断言Assert.assertEquals(expected, actual);}@Testpublic void testDivision() {System.out.println("测试了math类的除法");// Errorsint expected = 5 / 0;int actual = math.division(5, 2);assertEquals(expected, actual);}}

右键运行测试

控制台

junit test suite 套娃测试,suite套suite,suite套case

这个能一次性的测试更多方法。


结构

package cn.bitqian.suite;import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;import cn.bitqian.demo.MyMathTest;/*** suite 测试套件 套娃* 测试套件就是组织测试类一起运行* 写一个测试套件的入口类,这个类不包含其他的方法* @author echo lovely* @date 2020年11月13日 下午7:16:57*/// 运行器
@RunWith(Suite.class)
// 哪些测试类要包含, 会运行对应类的内容
@SuiteClasses({MyMathTest.class})
public class MyMathTestSuite {}
package cn.bitqian.suite;import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;import cn.bitqian.demo.MyMathTest2;/*** 测试套件2  套测试类 MyMathTest2* @author echo lovely* @date 2020年11月13日 下午7:16:57*/@RunWith(Suite.class)
@SuiteClasses({MyMathTest2.class})
public class MyMathTestSuite2 {}
package cn.bitqian.suite;import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;/*** 总套件,套娃,套两个Suite* @author echo lovely* @date 2020年11月13日 下午7:24:08*/@RunWith(Suite.class)
@SuiteClasses({ MyMathTestSuite.class, MyMathTestSuite2.class })
public class AllTests {}

运行 AllTests

当参数和结果有冲突时,测试具体某个方法

package cn.bitqian.demo;import java.util.Arrays;
import java.util.Collection;import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;/*** 测试MyMath类中的add方法* @author echo lovely* @date 2020年11月13日 下午8:08:17*/@RunWith(Parameterized.class)
public class MyMathAddTest {// 预期值int excepted = 0;// 参数1int input1 = 0;// 参数2int input2 = 0;public MyMathAddTest(int excepted, int input1, int input2) {super();this.excepted = excepted;this.input1 = input1;this.input2 = input2;}@Parameterspublic static Collection<Object[]> t(){return Arrays.asList(new Object[][]{{4,2,2},{11,9,2},{8,6,2},{1,-6,7}//   res v1 v2});}@Testpublic void testAdd(){MyMath myMath = new MyMath();Assert.assertEquals(this.excepted,myMath.add(this.input1, this.input2));}}

测试===JUnit单元测试相关推荐

  1. Junit单元测试不支持多线程测试问题全解析

    一.背景 今天@段段提出了一个很好的问题,她发现单元测试时如果开多个线程,主线程运行结束就结束了,并不会等待子线程结束. 如果用main方法就没问题,技术群里展开了激烈的讨论. 本文将"复现 ...

  2. AndroidStudio androidTest安卓测试 test单元测试(Junit)

    androidTest是整合测试,可以运行在设备或虚拟设备上,需要编译打包为APK在设备上运行,可以实时查看细节 test 是单元测试,运行在本地开发机上,可以脱离Android运行环境,速度快 An ...

  3. JUnit单元测试案例——异常测试(测试语言Java)

    一. 异常测试 对可能抛出的异常进行测试: 异常本身是方法签名的一部分: public static int parselnt(String s) throws NumberFormatExcepti ...

  4. Junit单元测试需要知道的一些知识点

    Junit单元测试框架-基于java语言对的主流单元测试框架 @beforeClass-位于数据准备前期或者其他前期准备(测试类调用前) --用于提取代码中的共用部分减少冗余,只能声明注解一次 --必 ...

  5. java中JUnit单元测试的使用方法

    package com.atguigu.java2;import java.sql.Date;import org.junit.Test;/** java中的JUnit单元测试* 步骤:(可以直接写@ ...

  6. JUnit单元测试中的setUpBeforeClass()、tearDownAfterClass()、setUp()、tearDown()方法小结

    编写JUnit单元测试的时候,会用到 setUpBeforeClass().tearDownAfterClass().setUp().tearDown()这四个方法,例如用 eclipse新建一个ju ...

  7. surefire 拉起 junit 单元测试类 源码阅读(一)

    根据surefire 拉起Junit单元测试类 输出的报错日志 跟踪执行过程: 日志1: java.lang.reflect.InvocationTargetExceptionat sun.refle ...

  8. junit单元测试断言_简而言之,JUnit:单元测试断言

    junit单元测试断言 简而言之,本章涵盖了各种单元测试声明技术. 它详细说明了内置机制, Hamcrest匹配器和AssertJ断言的优缺点 . 正在进行的示例扩大了主题,并说明了如何创建和使用自定 ...

  9. 学习 Spring Boot:(二十九)Spring Boot Junit 单元测试

    From: https://blog.wuwii.com/springboot-test.html 前言 JUnit 是一个回归测试框架,被开发者用于实施对应用程序的单元测试,加快程序编制速度,同时提 ...

最新文章

  1. 必读!TOP10生成对抗网络GAN论文(附链接)
  2. flask_入门教程之一
  3. linux常见的几种运行级,linux有几种运行级别
  4. dojo/domReady! 中感叹号的作用
  5. AI算法连载14:统计之模型选择
  6. rsa 返回值 验签 失败_解析蛋糕、面包制作失败的原因
  7. java方法调用的格式_Java基础(一)---方法的调用
  8. centos安装django
  9. 今日头条成锤子“接盘侠”?“是真的!”
  10. [ZZ]HOW TO:使用 Visual Studio .NET 将 SQL Server 2000 存储过程添加到 Visual SourceSafe
  11. CJOJ 1070 【Uva】嵌套矩形(动态规划 图论)
  12. php 支付宝退款40004,接入支付宝支付 错误码4000,排查方法——开发记录
  13. 错误推测法设计测试用例
  14. 编译原理实验三 TINY语法分析器
  15. 【转帖】计算机编程语言
  16. Android BMI程序设计
  17. 财务管理考研计算机,财务管理考研专业课包括什么
  18. SUS战队专访 | 关于赛题,能说的都在这里了
  19. succi -测手速游戏
  20. android 电话回音消除,智能门铃中可视对讲的回音消除

热门文章

  1. 前端学习(1320):同步和异步得区别
  2. 前端学习(1095):ES5新增方法
  3. shiro学习(11):servelet实现权限认证二
  4. 第三十九期:原生图数据库的15条规则
  5. 玩转oracle 11g(26):误删表数据和误删表回滚
  6. 微信小程序API~GET
  7. 常用机器学习算法汇总比较(完)
  8. cmd oracle sys登录_oracle忘记sys/system/scott用户密码的解决方法
  9. web前端开发怎么样学习?看这份web前端学习路线
  10. Spring-boot(一)