Junit和枚举ENUM

断言机制,JAVA中的断言机制是一种用于检查程序中某个条件是否为真的机制。它可以在程序运行时检查某个条件是否满足,如果不满足则会抛出AssertionError异常。

 

 

 

97525f66caf423e4a064070dc64dfe64.png

 

 

 

 

在java中,断言机制默认是关闭的。所以会输出u。

 

断言机制只是为了用来吃调试程序的,切勿将断言写入业务逻辑中。

 

 

 

目标字节码版本(Target Bytecode Version)是指在Java编译过程中,指定生成的字节码文件的版本。Java编译器会将Java源代码编译成字节码文件,然后由Java虚拟机(JVM)来执行这些字节码文件。

 

在Java中,每个版本的JDK都对应着一种字节码版本。不同的字节码版本可能会引入新的语言特性或优化,同时也可能会不兼容之前的版本。

 

通过指定目标字节码版本,可以确保编译器生成与指定版本兼容的字节码文件。这样,在运行时,只需要相应版本的JVM即可正确执行字节码文件。

 

在Java中,可以使用以下命令来指定目标字节码版本:

 

javac -target <version> <source files>

 

其中,<version>可以是以下几个值之一:

 

  • 1.1:Java 1.1
  • 1.2:Java 1.2
  • 1.3:Java 1.3
  • 1.4:Java 1.4
  • 1.5:Java 5
  • 1.6:Java 6
  • 11:Java 11
  • 12:Java 12
  • 13:Java 13
  • 14:Java 14
  • 15:Java 15
  • 16:Java 16

 

请注意,目标字节码版本的选择应根据项目的需求和目标平台来确定。

 

invoke方法是在代理对象的方法被调用时执行的。在这个例子中,invoke方法会在用户通过代理对象调用目标对象的方法时执行。

 

Junit单元测试

 

 

 

 

45cbe006eac1f44e2878a3dc63badc5d.png

 

 

 

Junit的断言机制,是Junit的核心

 

junit主要是测试方法的,有的方法的健壮性不高 !

 

有的代码在Junit的单元测试中虽然没有报错,但是代码的逻辑是有错误的,输出的结果和预期的结果不一样!这个时候就可以使用Junit的断言机制了 !

 

Generate里面有自动生成Junit单元测试的选项 !

 

 

322d9520f146ab40ae5738b543a5a10f.png

 

 

d11ee7c466397d94fd0cd203a26508d7.png

 

 

5a624e9739fb576d9253882081e1eba5.png

 

TestNG是一个java中的开源自动化测试框架,其灵感来自JUnit和NUnit,TestNG还涵盖了JUnit4整个核心的功能,但引入了一些新的功能,使其功能更强大,使用更方便。

 

import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;

 

TestNG的AfterTest在测试JedisPool的时候不会报错,但是Junit的After和Before是会报错的 !

 

@BeforeTest

 

public void setUp(){}

 

@AfterTest

 

public void tearDown(){}

 

2、TestNG常用注解
有必要介绍一下TestNG注解的生命周期,先看一下官网支持的注解有 :

 


@BeforeSuite 在该套件的所有测试运行之前运行,仅运行一次
@AfterSuite 在该套件的所有测试运行之后运行,仅运行一次
@BeforeTest 注释的方法将在属于test标签内的所有类的所有测试方法运行之前运行,一个test标签内可能有多个class(类),在当前test标签内仅运行一次
@AfterTest 注释的方法将在属于test标签内的所有类的所有测试方法运行之后运行,一个test标签内可能有多个class(类),在当前test标签内仅运行一次
@BeforeClass 在调用当前类的第一个测试方法之前运行,在当前类中仅运行一次
@AfterClass 在调用当前类的第一个测试方法之后运行,在当前类中仅运行一次
@BeforeGroups 配置方法将在组列表运行之前运行。 此方法保证在调用属于这些组中的任何第一个测试方法之前不久运行
@AfterGroups 此配置方法将在组列表运行之后运行。该方法保证在调用属于这些组的任何最后一个测试方法之后不久运行
@BeforeMethod 注释方法将在当前类中的每个测试方法之前运行
@AfterMethod 注释方法将在当前类中的每个测试方法之后运行
@Parameters 描述如何将参数传递给@Test方法
@DataProvider 标记一种方法来提供测试方法的数据。 注释方法必须返回一个Object [] [],其中每个Object []可以被分配给测试方法的参数列表。 要从该DataProvider接收数据的@Test方法需要使用与此注释名称相等的dataProvider名称
@Listeners 定义测试类上的侦听器
@Factory 将一个方法标记为工厂,返回TestNG将被用作测试类的对象。 该方法必须返回Object []
@Test 将类或方法标记为测试的一部分,此标记若放在类上,则该类所有公共方法都将被作为测试方法

 

 

 

注解

 

使用关键字 enum 定义的枚举类型,在编译期后,会转换成为一个实实在在的类,而在该类中,会存在每个在枚举类型中定义好常量的对应实例对象。

 

 

 

枚举类 ColorEnum 中自定义了一个无参构造方法。创建枚举实例就等同于调用此类的参构造器。
所以,3 个实例,就会调用 3 次构造方法,就会打印 3 次 “构造方法被调用”。

 

自定义构造方法是否带参数,得看枚举实例,若枚举实例中带参数(见下文),则构造方法中得带参数;否则,就不能带参数

 

 

 

枚举只是一种语法糖,最终会被编译器生成类,而枚举实例会变成静态常量。因此,从某种意义上说,jdk1.5 引入的枚举类型是枚举常量类的代码封装。当用setter() 方法进行修改值的时候,实际上是修改的一个内存中的静态变量的值,这个值原本的意义就被修改了!

 

枚举类使用了单例模式,保证了每个枚举实例的唯一性,且每个枚举实例都是静态常量。

 

 

a6193e4bd436533e7a1c6b235e0afc3d.png

 

 

5950052a0d71ac65121704a4a0970227.png

 

 

b29cd89cfa6a347452d38bcdbf5f1643.png

 

 

2eb7019b77c4572cd6a496a7197896b9.png

 

 

1a8462673e142ad3b2392fded96e36da.png

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值