首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在JUnit 5中使用枚举值作为标记

在JUnit 5中,可以使用枚举值作为标记来对测试方法进行分类或分组。枚举值可以用来表示不同的测试条件、环境或者其他特定的标记。

使用枚举值作为标记可以帮助我们更好地组织和管理测试用例,以便于在特定的场景下运行或排除某些测试。下面是一个示例:

首先,我们需要定义一个枚举类来表示不同的标记:

代码语言:txt
复制
enum TestTag {
    FAST,
    SLOW,
    SMOKE,
    REGRESSION
}

然后,在测试方法上使用@Tag注解来标记测试方法所属的标记:

代码语言:txt
复制
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;

@Test
@Tag("FAST")
void fastTest() {
    // 测试代码
}

@Test
@Tag("SLOW")
void slowTest() {
    // 测试代码
}

@Test
@Tag("SMOKE")
void smokeTest() {
    // 测试代码
}

@Test
@Tag("REGRESSION")
void regressionTest() {
    // 测试代码
}

接下来,我们可以使用JUnit 5提供的@IncludeTags@ExcludeTags注解来选择性地运行或排除某些标记的测试方法。

例如,我们可以在测试类上使用@IncludeTags注解来只运行带有FAST标记的测试方法:

代码语言:txt
复制
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Tags;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
import org.junit.jupiter.api.condition.EnabledOnOs;
import org.junit.jupiter.api.condition.OS;

@DisplayName("JUnit 5示例")
class JUnit5ExampleTest {

    @Test
    @DisplayName("快速测试")
    @Tag("FAST")
    void fastTest() {
        // 测试代码
    }

    @Test
    @DisplayName("慢速测试")
    @Tag("SLOW")
    void slowTest() {
        // 测试代码
    }

    @Test
    @DisplayName("冒烟测试")
    @Tag("SMOKE")
    void smokeTest() {
        // 测试代码
    }

    @Test
    @DisplayName("回归测试")
    @Tag("REGRESSION")
    void regressionTest() {
        // 测试代码
    }
}

以上就是在JUnit 5中使用枚举值作为标记的方法。通过使用枚举值作为标记,我们可以更好地组织和管理测试用例,提高测试的可读性和可维护性。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云官网:https://cloud.tencent.com/
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 物联网平台(IoT Explorer):https://cloud.tencent.com/product/iothub
  • 移动开发平台(移动推送):https://cloud.tencent.com/product/umeng
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙:https://cloud.tencent.com/solution/virtual-universe
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

程序员内功修炼——内省、反射与注解

,如果有异常的话,@After后面的代码也会执行 三、配置文件 ​ 按理说只要能保存一些配置信息,供程序动态读取数据就OK,但是为了提高效率, IT 行业中,习惯使用两种具有特殊特点的文件来作为配置文件...:@注解名(属性名=属性, 属性名=属性) ​ 注解贴在程序元素上,想要拥有某一些功能,必须有三个角色去参与: 注解本身 被贴的程序元素 第三方程序,使用反射给注解赋予功能(注解的背后,一定有一段代码给注解赋予功能...6.3、内置注解 @Override 限定覆写父类方法 @Deprecated 标记已过时,不推荐使用.JDK5之前,使用文档注释来标记过时 @SuppressWarings 抑制编译器发出的警告 @...ElementType.TYPE只能修饰类,接口,枚举。 6.4.2、@Retention ​ 表示注解可以保存在哪一个时期,表示时期的,封装在RetentionPolicy枚举类中。 ?...标记已过时,不推荐使用.JDK5之前,使用文档注释来标记过时 @SuppressWarings 抑制编译器发出的警告 @Functionallnterface 标记该接口是一个函数接口(JDK1.8开始出现的

39710

Junit5 新特性你用过多少?

可以看到左边一栏的结果里显示测试项名称就是我们测试类和方法上使用 @DisplayName 设置的名称,这个注解就是 JUnit 5 引入,用来定义一个测试类并指定用例测试报告中的展示名称,这个注解可以使用在类上和方法上...,类上使用它就表示该类为测试类,方法上使用则表示该方法为测试方法。...@Disabled 也可以使用在类上,用于标记类下所有的测试方法不被执行,一般使用对多个测试类组合测试的时候。...此外,嵌套的类也可以用@DisplayName 标记,这样我们就可以使用正确的测试名称。...除了上面提到的三种数据源方式外,JUnit 还提供了以下三种数据源: @EnumSource:允许我们通过参数值,给指定 Enum 枚举类型传入,构造出枚举类型中特定的

2.8K20

Java单元测试之JUnit 5快速上手

@DisplayName 设置的名称,这个注解就是 JUnit 5 引入,用来定义一个测试类并指定用例测试报告中的展示名称,这个注解可以使用在类上和方法上,类上使用它就表示该类为测试类,方法上使用则表示该方法为测试方法...] @Disabled 也可以使用在类上,用于标记类下所有的测试方法不被执行,一般使用对多个测试类组合测试的时候。...此外,嵌套的类也可以用@DisplayName 标记,这样我们就可以使用正确的测试名称。...除了上面提到的三种数据源方式外,JUnit 还提供了以下三种数据源: @EnumSource:允许我们通过参数值,给指定 Enum 枚举类型传入,构造出枚举类型中特定的。...> ,作为测试方法所需要的数据使用

1K20

Java单元测试之JUnit 5快速上手

可以看到左边一栏的结果里显示测试项名称就是我们测试类和方法上使用 @DisplayName 设置的名称,这个注解就是 JUnit 5 引入,用来定义一个测试类并指定用例测试报告中的展示名称,这个注解可以使用在类上和方法上...,类上使用它就表示该类为测试类,方法上使用则表示该方法为测试方法。...@Disabled 也可以使用在类上,用于标记类下所有的测试方法不被执行,一般使用对多个测试类组合测试的时候。...此外,嵌套的类也可以用@DisplayName 标记,这样我们就可以使用正确的测试名称。...除了上面提到的三种数据源方式外,JUnit 还提供了以下三种数据源: @EnumSource:允许我们通过参数值,给指定 Enum 枚举类型传入,构造出枚举类型中特定的

1.2K40

JUnit5学习之六:参数化测试(Parameterized Tests)基础

源码,此时已经是稳定版了: 综上所述,如果要使用参数化测试,最好是将junit-jupiter升级到5.7.0或更高版本,如果您的应用使用了SpringBoot框架,junit-jupiter是被...,用法和执行结果如下图所示: 枚举数据源(EnumSource) EnumSource可以让一个枚举类中的全部或者部分值作为测试方法的入参; 创建枚举类Types.java,用于接下来的实战,如下...,很简单只有三个: public enum Types { SMALL, BIG, UNKNOWN } 先尝试用Types的每个作为入参执行测试,可见只要添加@EnumSource...即可,JUnit根据测试方法的入参类型知道要使用哪个枚举: @Order(6) @DisplayName("多个枚举型入参") @ParameterizedTest @EnumSource...enumSourceTest(Types type) { log.info("enumSourceTest [{}]", type); } 执行结果如下图所示: 如果不想执行枚举的所有

81620

Junit 5新特性全集

2、测试类的生命周期 @Test Junit的最核心的就是@Test这个注解,把它放置方法上来作为测试用例来运行。JUnit 5为每个测试方法创建一个新的测试实例,这个和Junit 4是一样的。...测试用例和标记了@AfterEach的方法之后运行。 因为每个test都要创建一个实例,所以实例没机会去调用标记了@BeforeAll和@AfterAll的实例方法。...只需要简单的使用@Nested把内部类标记了,里边所有的测试方法就也会被执行。...2、Enum Source 传入枚举,则会对枚举的每个执行一次,同时可以通过names来控制要执行哪些枚举: @ParameterizedTest @EnumSource(TimeUnit.class...会解析成valueOf方法返回)。 任何枚举。解析成Enum::valueOf。

1.7K120

Effective-java-读书笔记之枚举和注解

存在诸多不足, 类型安全性和使用方便性方面没有任何帮助.采用int枚举模式的程序是十分脆弱的, 因为int枚举是编译时常量, 被编译到使用它们的客户端中....返回每个枚举常量类型中的数字位置.永远不要根据枚举的序数导出与它关联的, 而是要将它保存在一个实例域中.第36条 用EnumSet代替位域如果一个枚举类型的元素主要用在集合中, 一般就用int枚举模式...如果API是根据接口编写的, 那么可以使用基础枚举类型的任何地方, 也都可以使用这些枚举.第39条 注解优先于命名模式Java 1.5之前, 一般使用命名模式(naming pattern)表明有些程序元素需要通过某种工具或者框架进行特殊处理...比如JUnit3要求测试方法名以test开头....例如Serializable接口.标记接口和标记注解各有用处.

53950

Java Code Review清单

,系统内部相关,配置)P 私密信息(Confidential Information) 不要把高度敏感的信息写到日志 私密信息(Confidential Information) 考虑把高度敏感的信息使用后从内存中清除...通过序列化来保护敏感数据 序列化反序列化(Serialization Deserialization) 小心地缓存潜在的特权操作结果 序列化反序列化(Serialization Deserialization) 只有需要的时候才使用...,而不是null 方法 最小化类和成员的可访问性 类和接口 pulibc类中,使用访问器方法(accessor methods)(译者注:访问器方法即我们平常用的get/set方法)而不是public...总是重写toString 综合编程 使用枚举来代替int常量 枚举和注解(Annotations) 使用标记接口(marker interface)(译者注:标记接口是一种没有任何行为的接口,实现它只是为了让实现类属于某种类型...,如JDK中的Serializable,Cloneable等)来定义类型 枚举和注解(Annotations) 对共享可变的数据使用同步访问 并发 使用executors而不是task和thread 并发

70020

五年了,你还在用junit4吗?

此外,嵌套的类也可以用@DisplayName 标记,这样我们就可以使用正确的测试名称。...没有限制嵌套层数,除非必要一般不建议使用超过3层,过于复杂的层次结构会增加开发者理解用例关系的难度 构造函数和方法的依赖注入 之前的所有JUnit版本中,测试构造函数或方法都不允许有参数(至少不能使用标准的...EnumSource: 表示为参数化测试提供一个枚举入参 @CsvSource:表示读取CSV格式内容作为参数化测试入参 @CsvFileSource:表示读取指定CSV文件内容作为参数化测试入参 @MethodSource...:表示读取指定方法的返回作为参数化测试入参(注意方法返回需要是一个流) @ArgumentsSource:指定一个自定义的,可重用的ArgumentsProvider。...image-20210416233807174 如果不是基础的类型,可以使用方法构造,只要返回为Stream类型就可以,多个参数使用Arguments实例流 @ParameterizedTest @MethodSource

1.5K40

《面试1v1》java注解

JUnit的@Test就是告诉测试运行器哪些是测试方法。面试官:注解和注释有什么区别吧?...@Pointcut:定义一个切点,可以是一个规则表达式,和@Before等注解搭配使用。@Before:前置通知,目标方法调用前执行。...这些AOP注解通过方法上标记,就可以实现方法的切入、替换等,真正做到面向切面编程。面试官:自定义注解需要什么?...然后使用@interface自定义注解,可以添加属性,默认等。面试官:注解的生命周期有几种?...如果注解有默认,使用注解时可以忽略该。同一个地方不能同时存在两个同名注解。注解不能作用于变量、类的私有成员上。注解不会继承,子类或者实现类无法继承父类或者接口的注解。图片《面试1v1》合集---

12140

④【Spring】IOC - 基于注解方式 管理bean

(service) @Repository : 标记持久化层组件(DAO) @Controller、@Service、@Repository这三个注解只是@Component注解的基础上起了三个新的名字...expression="org.springframework.stereotype.Controller"/> 注:bean的id属性 我们使用...(都需要创建bean) 使用 @Autowired注解 实现自动装配 案例: - TestController 需要 TestService; - TestService 需要 TestDao; - 同时各个组件中声明要调用的方法...注解 相当于XML文件中的bean标签,标记的方法的返回会被放入 IOC 容器,默认以方法名作为 bean 的 id; 使用 AnnotationConfigApplicationContext...标签,标记的方法的返回会被放入 IOC 容器,默认以方法名作为 bean 的 id @RunWith:指定Spring为Junit提供的运行器 @ContextConfiguration:

16220

《Java-SE-第三十八章》之注解

注解的作用 对Java中类,方法,成员变量做标记,然后进行特殊处理,至于到底进行何种处理由具体业务决定。...比如说:JUnit框架中,标注了注解为@Test的方法就可以被当成测试方法执行,而没有标记的就不能打算当初当成测试方法执行。...特殊属性 value属性,如果只有一个value属性的情况下,使用value属性的时候可以省略value名称不写。 但是如果有多个属性,并且属性没有默认,那么value名称不能省略。...常用的元注解 @Target: 约束自定义注解只能在哪些地方使用 @Retention:申明注解的生命周期 @Target中可使用定义枚举类ElementType中,常用如下: TYPE,类 接口...FIELD, 成员变量METHOD, 成员方法PARAMETER, 方法参数CONSTRUCTOR, 构造器LOCAL_VARIABLE 局部变量 @Retention中可使用定义枚举类ElementType

11210

Java 注解与单元测试

定义注解时需要使用关键字 @interface, 该关键字会默认继承 Annotation 接口,并将定义的接口作为注解使用 注解中可以定义方法,这些方法的返回只能是基本类型、String、枚举类型...使用注解时需要注意以下几个事情 必须给注解的属性赋值,如果不想赋值可以使用default来设置默认 如果属性列表中只有一个名为value的属性,那么赋值时可以不用指定属性名称 多个属性之间使用逗号隔开...,该枚举类型可以取下列几个 ElementType 含义 TYPE 接口、类(包括注解)、枚举类型上使用 FIELD 字段声明(包括枚举常量) METHOD 方法 PARAMETER 参数声明 CONSTRUCTOR...Junit框架 软件开发中为了保证软件质量单元测试是必不可少的一个环节,Java中提供了Junit 测试框架来进行单元测试 一般一个Java项目每一个类都会对应一个test类用来做单元测试,例如有一个...:测试方法被执行前会执行该注解修饰的方法 @After:测试方法被执行后会执行该注解修饰的方法 除了注解JUnit定义了一些断言函数来实现自动化测试,常用的有如下几个: void assertEquals

1.1K10

Junit5框架详解

此外,该平台还提供了一个控制台启动器,可以从命令行启动平台,并为Gradle 和 Maven 构建插件,以及一个基于JUnit 4的运行器(JUnit 4 based Runner),用于平台上运行任何...**JUnit Jupiter:**是JUnit 5中编写测试和扩展的新编程模型和扩展模型的组合。...**JUnit Vintage:**提供了一个平台上运行JUnit 3和JUnit 4的 TestEngine 。...1.2、why Junit5 众所周知Java的测试框架比较有名是TestNG、Junit,今本次架构师课程我给大家讲解Junit5框架的基本使用和改造,为什么会现在Junit5也是有很多原因的,对于这...assertThat(map, hasValue("test2")); 2、Java注解和反射 上面我们介绍了Junit5的基本使用后,下面我们来看看注解和反射,为什么我们要学习注解和反射,这块设计测试框架以及多框架功能扩展的时候我们就会用到注解和反射

1.1K40

如何写好 Java 业务代码?这也是有很多规范的!

参数校验: 使用java validtion对通用的字段,例如电话号码,身份证,进行扩展,详细可以参考,如何使用validation校验参数?,项目中其他类似校验进行复用。...使用MapStruct,可以灵活的控制的不同属性之间的转换规格,比org.springframework.beans.BeanUtils.copyProperties()方法更加灵活。...,mybatis-plus中使用MetaObjectHandler,执行sql之前完成统一字段的填充。...枚举类的使用: 在业务中特别是状态的,在对外发布api的vo对象中,加上状态枚举的注释,并且使用@link 注解,可以直接连接到枚举类,让开发者一目了然。...    // TODO 修改操作为涉及到的查询操作     // TODO 使用redis生成业务code     // 使用声明式事务控制产品状态修改的相关数据库操作     boolean status

95720

SpringBoot2核心技术-单元测试

("Math", () -> assertEquals(2, 1 + 1), () -> assertTrue(1 > 0) ); } 4、异常断言 JUnit4时期,想要测试方法的异常情况时...而JUnit5提供了一种新的断言方式Assertions.assertThrows()** ,配合函数式编程就可以进行使用。...@CsvFileSource:表示读取指定CSV文件内容作为参数化测试入参 @MethodSource:表示读取指定方法的返回作为参数化测试入参(注意方法返回需要是一个流) 当然如果参数化测试仅仅只能做到指定普通的入参还达不到让我觉得惊艳的地步...如:CSV,YML,JSON 文件甚至方法的返回也可以作为入参。只需要去实现ArgumentsProvider接口,任何外部文件都可以作为它的入参。...: 注解 org.junit.jupiter.api 包中,断言 org.junit.jupiter.api.Assertions 类中,前置条件 org.junit.jupiter.api.Assumptions

61920

JavaSE-汇总

答:使用枚举 枚举实现 枚举有二种实现方式:1.自定义类实现、2.使用 enum 关键字实现 枚举对应英文(enumeration, 简写enum) 枚举是一组常量的集合。...自定义类实现枚举 1.不需要提供setXxx方法,因为枚举对象通常为只读, 2.对枚举对象/属性使用 final + static 共同修饰,实现底层优化。...和注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入代码中的补充信息。 JavaSE 中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。...class ArrayList extends AbstractList implements List { //该类里,E可以作为类型使用 public void set...是一个Java语言的单元测试框架,多数Java的开发环境都已经集成了JUnit作为单元测试的工具 传统方法 package com.jwt.generic; public class JUnit_ {

1.4K10
领券