网站名查询网址,泉州关键词排名推广,中国新闻社官网招聘,有没有专门的销售公司测试
测试#xff1a;是一种用来促进鉴定软件的正确性#xff0c;完整性#xff0c;安全性和质量的过程。
测试的阶段#xff1a;
单元测试#xff0c;集成测试#xff0c;系统测试#xff0c;验收测试。 单元测试#xff1a;对软件的基本组成单位进行测试#xff…测试
测试是一种用来促进鉴定软件的正确性完整性安全性和质量的过程。
测试的阶段
单元测试集成测试系统测试验收测试。 单元测试对软件的基本组成单位进行测试是最小的测试单位。 目的检验软件的基本组成单位的正确性 测试人员开发人员 测试的方法白盒测试 集成测试将已通过单元测试的单元按设计要求组合成系统或子系统在进行测试。 目的检查单元之间的协作是否正确。 测试人员开发人员 测试的方法灰盒测试 系统测试对集成好的软件系统进行彻底的测试。 目的验证软件系统的正确性性能是否满足指定的要求 测试人员测试人员 测试的方法黑盒测试 验收测试交付测试针对用户需求对业务流程进行正式的测试。 目的验证软件系统是否满足验收的标准 测试人员客户/需求方 测试的方法黑盒测试 测试的方法白盒测试黑盒测试灰盒测试 白盒测试清楚软件内部结构代码逻辑。用于验证代码逻辑的正确性。 黑盒测试不清楚软件内部结构代码逻辑。用于验证软件的功能兼容性等方面。 灰盒测试结合了白盒测试和黑盒测试的特点既关注软件的内部结构又考虑外部表现。 入门 main方法测试 1.测试代码与源码不分离难以维护。 2.一个方法测试失败影响后面方法。 3.无法自动化测试得到测试报告。 单元测试针对最小的功能单元编写测试代码对其正确性进行测试。
JUnit最流行的Java测试框架之一提供一些固定功能方便程序进行单元测试 JUnit方法测试 1.测试代码与源码分离利于维护。 2.一个方法测试失败不影响后面方法。 3.可根据需要进行自动化测试。 4.可自动分析测试结果产出测试报告。 JUnit使用方法
1.在pom.xml中引入Junit依赖。
!--junit依赖--!-- JUnit Jupiter API --dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-api/artifactIdversion5.8.1/versionscopetest/scope/dependency!-- JUnit Jupiter Engine --dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-engine/artifactIdversion5.8.1/versionscopetest/scope/dependency!-- JUnit Platform Launcher --dependencygroupIdorg.junit.platform/groupIdartifactIdjunit-platform-launcher/artifactIdversion1.8.1/versionscopetest/scope/dependency!-- JUnit Jupiter Params --dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-params/artifactIdversion5.8.1/versionscopetest/scope/dependency
2.在test/java目录下创建测试类并编写对应的测试方法并在方法上声明Test注解。 注JUnit单元测试类名命名规范为XxxxxTest。 JUnit单元测试方法必须声明为public void xxx{}。 注运行测试单元测试通过为绿色测试失败为红色。 断言 JUnit提供一些辅助方法用来帮我们确定被测试的方法是否按照预期的效果正常工作这种方式被称为断言。 Assertions.assertEquals(object expObject act检查两个值是否相等不相等就报错。 Assertions.assertNotEquals(object unexpObject act检查两个值是否不相等相等就报错 Assertions.assertNuli(object act检查对象是否为null不为null就报错。 Assertions.assertNotNul(object act检查对象是否不为null为null就报错。 Assertions.assertTrue(boolean condition检查条件是否为true不为true就报错 Assertions.assertFalse(boolean condition检查条件是否为false不为false就报错。 Assertions.assertThrows(class expTypeExecutable exec检查两个对象引用是否相等不相等就报错。 package com.itheima;import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest; // 添加此行导入
import org.junit.jupiter.params.provider.ValueSource;public class UserServiceTest {//UserService 计算年龄Testpublic void testGetAge() {UserService userService new UserService();Integer age userService.getAge(610125190511117117);System.out.println(age);}//计算性别Testpublic void testGetGender() {UserService userService new UserService();String gender userService.getGender(610125190511117117);System.out.println(gender);}//断言Testpublic void testGenderWithAssert() {System.out.println(断言gender是男);UserService userService new UserService();String gender userService.getGender(610125190511117117);Assertions.assertEquals(男,gender);}//断言Testpublic void testGenderWithAssert2() {System.out.println(断言gender类型);UserService userService new UserService();Assertions.assertThrows(IllegalArgumentException.class,()-{//期望异常userService.getGender(null);//实际异常});}
}
运行结果 总结 在JUnit单元测试中断言的作用 单元测试方法运行不报错不代表业务方法没问题。 通过断言可以检测方法运行结果是否和预期一致从而判断业务方法的正确性 使用方法Assertions.assert**** 常见注解 常见注解 Test测试类中的方法用它修饰才能成为测试方法才能启动执行 ParmeterizedTest 参数化测试的注解可以让单个测试运行多次每次运行时仅参数不同用了该注解就不需要Test注解了 DValueSource参数化测试的参数来源赋予测试方法参数 ,与参数化测试注解配合使用 DisplayName 指定测试类、测试方法显示的名称 默认为类名、方法名 BeforeEach用来修饰一个实例方法该方法会在每一个测试方法执行之执行一次初始化资源准备工作 AfterEach用来修饰一个实例方法该方法会在每一个测试方法执行之后执行一次释放资源清理工作 BeforeAll用来修饰一个静态方法该方法会在所有测试方法之前只执行一次初始化资源准备工作 AfterAll用来修饰一个静态方法该方法会在所有测试方法之后只执行一次释放资源清理工作 注 1.JUnit单元测试的方法是否可以声明方法形参 可以的参数化测试 ParameterizedTest ValueSource 2。如何实现在单元测试方法运行之前做一些初始化操作 BeforeEach、BeforeAll 3如何实现在单元测试方法运行之后释放对应的资源 AfterEach、AfterAll 参数化测试ParmeterizedTest
依赖范围scope..../scope 在maven项目中test目录存放单元测试的代码是否可以在main目录中编写单元测试呢 可以但是不规范 依赖的jar包默认情况下可以在任何地方使用。可以通过scope../scope设置其作用范围 作用范围 主程序范围有效。main文件夹范围内 测试程序范围有效。test文件夹范围内 是否参与打包运行。package指令范围内 !--junit依赖--!-- JUnit Jupiter API --dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-api/artifactIdversion5.8.1/versionscopetest/scope/dependencyscopetest/scope scope的值为test测试程序范围有效。