当前位置: 首页 > news >正文

天津做网站推广的网站网站模板 兼容

天津做网站推广的网站,网站模板 兼容,静态网页制作,怎样制作图片网站JUnit5 单元测试框架使用教程 一、Junit5 是什么#xff1f; Junit5是一个用于在Java平台上进行单元测试的框架。JUnit 5 框架主要由三部分组成#xff1a;JUnit Platform、JUnit Jupiter 和 JUnit Vintage。 JUnit Platform#xff1a;定义了测试引擎的 API#xff0c;是… JUnit5 单元测试框架使用教程 一、Junit5 是什么 Junit5是一个用于在Java平台上进行单元测试的框架。JUnit 5 框架主要由三部分组成JUnit Platform、JUnit Jupiter 和 JUnit Vintage。 JUnit Platform定义了测试引擎的 API是 JVM 上用于启动测试框架的基础服务支持通过 IDE、构建工具、命令行等方式运行单元测试。JUnit Jupiter包含 JUnit 5 新的编程模型和扩展模型主要用于编写和扩展测试代码。JUnit Vintage兼容运行 JUnit 3 和 JUnit4 编写的测试用例。 二、Junit5 的注解 一导入依赖 导入五个依赖 !-- junit-jupiter-api 里有 BeforeAll……等注解 --dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-api/artifactIdversion5.10.0/version/dependency!-- junit-jupiter-params 里有 ValueSource……等注解 --dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-params/artifactIdversion5.10.0/version/dependency!-- 用于运行 识别上述注解 --dependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-engine/artifactIdversion5.10.0/versionscopetest/scope/dependency!-- 测试套件 --dependencygroupIdorg.junit.platform/groupIdartifactIdjunit-platform-suite-api/artifactIdversion1.10.0/version/dependency!-- 运行测试套件的测试引擎--dependencygroupIdorg.junit.platform/groupIdartifactIdjunit-platform-suite-engine/artifactIdversion1.10.0/versionscopetest/scope/dependency二常用的注解 如果你的IDEA在使用JUnit注解的时候发生如下情况依赖已经导入且加载完成但是IDEA没能识别出来如图 有的注解也在params包中。 我真的不理解为啥 有一种解决办法 点击后选择相应的版本我这里是5.10.0点了之后IDEA就能识别出来了。 现在我也找了很多测试的朋友做了一个分享技术的交流群共享了很多我们收集的技术文档和视频教程。 如果你不想再体验自学时找不到资源没人解答问题坚持几天便放弃的感受 可以加入我们一起交流。而且还有很多在自动化性能安全测试开发等等方面有一定建树的技术大牛 分享他们的经验还会分享很多直播讲座和技术沙龙 可以免费学习划重点开源的 qq群号110685036 1.Test public class JUnitTest {Testvoid test0(){System.out.println(测试用例1);}Testvoid test1(){System.out.println(测试用例2);}Testvoid test2(){System.out.println(测试用例3);} }结果 2.BeforeAll、AfterAll BeforeAll表示被注解的方法应该在当前类的所有TestRepeatedTestParameterizedTest和TestFactory方法之前执行;AfterAll表示被注解的方法应该在当前类的所有TestRepeatedTestParameterizedTest和TestFactory方法之后执行; 使用BeforeAll和AfterAll注解的方法要加上static。 public class JUnitTest {BeforeAllstatic void beforeAll(){//可以用于创建一些资源System.out.println(我是BeforeAll我最开始执行。);}AfterAllstatic void afterAll(){//可以用于释放资源System.out.println(我是AfterAll我最后执行。);}Testvoid test0(){System.out.println(测试用例1);}Testvoid test1(){System.out.println(测试用例2);}Testvoid test2(){System.out.println(测试用例3);} }3.BeforeEach、AfterEach BeforeEach表示被注解的方法应在当前类的每个TestRepeatedTestParameterizedTest或TestFactory方法之前执行;AfterEach表示被注解的方法应在当前类的每个TestRepeatedTestParameterizedTest或TestFactory方法之后执行; public class JUnitTest {BeforeAllstatic void beforeAll(){System.out.println(我是BeforeAll我最开始执行。);}AfterAllstatic void afterAll(){System.out.println(我是AfterAll我最后执行。);}BeforeEachvoid beforeEach(){System.out.println(我是BeforeEach我在每个 Test 前执行。);}AfterEachvoid afterEach(){System.out.println(我是AfterEach我在每个 Test 后执行。);}Testvoid test0(){System.out.println(测试用例1);}Testvoid test1(){System.out.println(测试用例2);}Testvoid test2(){System.out.println(测试用例3);} } 结果 4.Disabled Disabled用于禁用测试类或测试方法添加该注解的方法不会被测试。 public class JUnitTest {BeforeAllstatic void beforeAll(){System.out.println(我是BeforeAll我最开始执行。);}AfterAllstatic void afterAll(){System.out.println(我是AfterAll我最后执行。);}BeforeEachvoid beforeEach(){System.out.println(我是BeforeEach我在每个 Test 前执行。);}AfterEachvoid afterEach(){System.out.println(我是AfterEach我在每个 Test 后执行。);}TestDisabled //忽略测试用例1void test0(){System.out.println(测试用例1);}Testvoid test1(){System.out.println(测试用例2);}Testvoid test2(){System.out.println(测试用例3);} } 结果 三参数化测试 1.ParameterizedTest ValueSource ParameterizedTest的作用就是可以用不同的参数多次运行测试。但是必须声调用提供参数的来源(source)。 ValueSource它可以让你指定一个原生类型Stringintlong或double的数组并且只能为每次调用提供一个参数。 public class JUnitTest {BeforeAllstatic void beforeAll(){System.out.println(我是BeforeAll我最开始执行。);}AfterAllstatic void afterAll(){System.out.println(我是AfterAll我最后执行。);}BeforeEachvoid beforeEach(){System.out.println(我是BeforeEach我在每个 Test 前执行。);}AfterEachvoid afterEach(){System.out.println(我是AfterEach我在每个 Test 后执行。);}Testvoid test0(){System.out.println(测试用例1);}Testvoid test1(){System.out.println(测试用例2);}Testvoid test2(){System.out.println(测试用例3);}ParameterizedTestValueSource(strings {小明,小红,小兰})void paramTest(String name){System.out.println(name);} }结果 2.ParameterizedTest CsvSource CsvSource允许将参数列表表示为以逗号分隔的值例如字符串文字。 public class JUnitTest { ParameterizedTestCsvSource({小明, 1,小红,2,小兰,3})void csvSource(String name,int id){System.out.println(name : id);} }结果 CsvSource使用作为转义字符。 示例输入结果字符列表CsvSource({ foo, bar })foo, barCsvSource({ foo, baz, qux })foo, baz, quxCsvSource({ foo, })foo, CsvSource({ foo, })foo, null 3.ParameterizedTest CsvFileSource CsvFileSource让你使用classpath中的CSV文件。CSV文件中的每一行都会导致参数化测试的一次调用。 在resources目录下创建csv文件 test.csv: 小明, 1 小红, 2 小明, 小红, 3 public class JUnitTest {ParameterizedTestCsvFileSource(resources /test.csv)void csvFile(String name,int id){System.out.println(name : id);} } 结果 与CsvSource中使用的语法相反CsvFileSource使用双引号作为转义字符。通过上面的代码就可以看出来。一个空的转义值会产生一个空字符串 一个完全为空的值被解释为null引用。 4.ParameterizedTest MethodSource MethodSource允许引用一个或多个测试类的工厂方法。 public class JUnitTest {ParameterizedTestMethodSource(stringProvider) //指定方法void methodSource(int age,String name){System.out.println(age : name);}static StreamArguments stringProvider() {return Stream.of(Arguments.arguments(12,李四),Arguments.arguments(18,王五),Arguments.arguments(20,小红));} }MethodSource注解表示这个方法的参数来源于一个名为stringProvider的静态方法。stringProvider方法返回一个StreamArguments类型的对象其中每个Arguments对象包含了一组用于测试的参数。 四测试方法的执行顺序 1.TestMethodOrder Order 在 JUnit5 中测试方法执行的顺序是不确定的或者是根据方法首字母来排序的。 public class JUnitTest2 {Testvoid C(){System.out.println(A);}Testvoid B(){System.out.println(B);}Testvoid A(){System.out.println(C);} } 结果 让执行顺序为 C、B、A TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class JUnitTest2 {int a 0;TestOrder(1)void C(){a;System.out.println(a);System.out.println(C);}TestOrder(2)void B(){a;System.out.println(a);System.out.println(B);}TestOrder(3)void A(){a;System.out.println(a);System.out.println(A);} }首先在类上添加TestMethodOrder(MethodOrderer.OrderAnnotation.class)然后再为每个方法上添加Order()注解值越小越优先被执行。 五测试实例的生命周期 1.TestInstance 我添加一个成员变量每次执行测试方法的时候都一次。 TestMethodOrder(MethodOrderer.OrderAnnotation.class) TestInstance(TestInstance.Lifecycle.PER_METHOD) public class JUnitTest2 {int a 0;TestOrder(1)void A(){a;System.out.println(A方法 a);System.out.println(A);}TestOrder(2)void B(){a;System.out.println(B方法 a);System.out.println(B);}TestOrder(3)void C(){a;System.out.println(C方法 a);System.out.println(C);} } 结果 为了允许隔离执行单个的测试方法JUnit在执行每个测试方法之前会创建每个测试类的新实例。如果想改变策略就要用TestInstance在类上添加TestInstance(TestInstance.Lifecycle.PER_CLASS)。 TestMethodOrder(MethodOrderer.OrderAnnotation.class) TestInstance(TestInstance.Lifecycle.PER_CLASS) public class JUnitTest2 {int a 0;TestOrder(1)void A(){a;System.out.println(A方法 a);System.out.println(A);}TestOrder(2)void B(){a;System.out.println(B方法 a);System.out.println(B);}TestOrder(3)void C(){a;System.out.println(C方法 a);System.out.println(C);} } 结果 Lifecycle.PER_CLASS表示只创建一个实例。不添加注解的时候默认是Lifecycle.PER_METHOD。 当使用这种模式时每个测试类将创建一个新的测试实例。因此如果测试方法依赖于存储在实例变量中的状态则可能需要在BeforeEach或AfterEach方法中重置该状态重置变量的值。 六断言 Assertions 断言方法描述assertEquals(expected, actual)检查两个值是否相等如果不相等则抛出AssertionErrorassertNotEquals(expected, actual)检查两个值是否不相等如果相等则抛出AssertionErrorassertTrue(condition)检查一个条件是否为真如果为假则抛出AssertionErrorassertFalse(condition)检查一个条件是否为假如果为真则抛出AssertionErrorassertNull(object)检查一个对象是否为null如果不为null则抛出AssertionErrorassertNotNull(object)检查一个对象是否不为null如果为null则抛出AssertionErrorassertSame(expected, actual)检查两个对象是否是同一个实例如果不是则抛出AssertionErrorassertNotSame(expected, actual)检查两个对象是否不是同一个实例如果是则抛出AssertionErrorassertArrayEquals(expected, actual)检查两个数组是否相等如果不相等则抛出AssertionErrorassertTimeout(duration, executable)检查一个可执行的代码块是否在指定的时间内完成如果超时则抛出AssertionError public class JUnitTest3 {Testvoid assertEqualsDemo(){int num 10;Assertions.assertEquals(1,num,不符合预期);}Testvoid assertTrueDemo(){int num 10;Assertions.assertTrue(num 10,不符合预期);}Testvoid assertTimeoutDemo(){int num 10;Assertions.assertTimeout(Duration.ofSeconds(3), new Executable() {Overridepublic void execute() throws Throwable {//代码块Thread.sleep(4000);}});} } 结果 七测试套件 测试套件是一组相关的测试可以一起运行以便更方便地组织和管理测试。使用套件要引入两个依赖junit-platform-suite-api、junit-platform-suite-engine具体的在文章开头。 套件其实很好理解就是使几个类同时进行测试。 1.SelectClasses Suite SelectClasses(value {JUnitTest.class,JUnitTest2.class}) public class RunSuite {} Suite的作用是将一个类标记为JUnit平台上的测试套件。 SelectClasses指定在JUnit平台上运行测试套件时要选择的类。 运行结果 2.SelectPackages 可以选择类那么也可以包。 Suite SelectPackages(value {package1}) //可以选择多个包SelectPackages(value {package1,package2,package3……}) public class RunSuite {} 结果 为什么只执行了JUnitTest这一个类我的JUnitTest2呢我们来看看它 IDEA提示我们它的命名不符合规则那这个规则是什么意思呢 3.测试类命名规则 [A-Z[A-Za-z\d]*Test(s|Case)?表示以大写字母开头后面跟任意个字母或数字最后以Test, Tests, TestCase结尾的字符串例如MyTest, MyTests, MyTestCase等。Test[A-Z[A-Za-z\d]*表示以Test开头后面跟一个大写字母再后面跟任意个字母或数字的字符串例如TestMyClass, TestMyMethod等。IT(.*)表示以IT开头后面跟任意个任意字符的字符串例如ITMyClass, ITMyMethod等。(.*)IT(Case)?表示以任意个任意字符开头后面跟IT或者ITCase的字符串例如MyClassIT, MyMethodITCase等。 其实就是我们的类命名不规范导致框架识别不出来。改类名后 最后感谢每一个认真阅读我文章的人看着粉丝一路的上涨和关注礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 软件测试面试文档 我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。
http://www.dnsts.com.cn/news/192100.html

相关文章:

  • 汕头seo网站排名桐城做网站的公司
  • 网站安全管理制度建设营口建网站的公司
  • 微信链接的微网站怎么做的三合一商城网站
  • 陆良县住房和城乡建设局网站服装设计网站模板
  • 年栾洪全单页做网站教程wordpress 设置 logo
  • 惠州网站建设哪里有wordpress服务器安装教程
  • 网站有没有做网站地图怎么看移动互联网开发招人
  • 自己有服务器怎么建设网站wordpress社交游戏
  • 谷歌英文网站优化js特效素材网
  • 太原关键词网站排名保定网站推广费用
  • 怎么做企业网站排名动态ip怎么建设网站
  • 做网站网络公司腾讯cvm安装wordpress
  • 四川省住房与城乡建设厅网站wordpress搬家失败
  • 网站开发如何入门锦州微商网站制做
  • 给金融的做网站 犯法吗四川成都设计院
  • 江苏省工程建设标准站网站石材外贸在哪个网站做
  • 海洋cms怎么做电影网站万户 网站建设
  • 交互网站 百度客户资源网
  • 科协科普网站建设ipc网站备案查询
  • 医疗手机网站建设网站版本功能列表
  • 网站建站网站jp586 vip江苏网站建设yijuce
  • 公司做网站需要准备什么做冷饮的网站
  • 怎么做网站图片专业品牌网站建设
  • 网站icp备案流程仿win8 网站模版
  • 企业申请完域名以后 怎么把网站运行起来网站规划的特点
  • 天津制作网站公司推荐印象笔记配置到wordpress
  • 网站后台设置网站地图网站建设的开题报告
  • 自己建设网站容易吗wordpress 支付可见
  • 网站设计常用字体花卉市场网站建设基本步骤
  • 怎样看网站建设wordpress白色简约