本文共 6733 字,大约阅读时间需要 22 分钟。
内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
《JUnit5学习》系列旨在通过实战提升SpringBoot环境下的单元测试技能,一共八篇文章,链接如下:
名称 | 链接 | 备注 |
---|---|---|
项目主页 | 该项目在GitHub上的主页 | |
git仓库地址(https) | 该项目源码的仓库地址,https协议 | |
git仓库地址(ssh) | git@github.com:zq2599/blog_demos.git | 该项目源码的仓库地址,ssh协议 |
package com.bolingcavalry.parameterized.service.impl;import org.junit.jupiter.api.extension.ExtensionContext;import org.junit.jupiter.params.provider.Arguments;import org.junit.jupiter.params.provider.ArgumentsProvider;import java.util.stream.Stream;public class MyArgumentsProvider implements ArgumentsProvider { @Override public Stream provideArguments(ExtensionContext context) throws Exception { return Stream.of("apple4", "banana4").map(Arguments::of); }}
@Order(15) @DisplayName("ArgumentsProvider接口的实现类提供的数据作为入参") @ParameterizedTest @ArgumentsSource(MyArgumentsProvider.class) void argumentsSourceTest(String candidate) { log.info("argumentsSourceTest [{}]", candidate); }
@Order(16) @DisplayName("int型自动转为double型入参") @ParameterizedTest @ValueSource(ints = { 1,2,3 }) void argumentConversionTest(double candidate) { log.info("argumentConversionTest [{}]", candidate); }
@Order(17) @DisplayName("string型,指定转换器,转为LocalDate型入参") @ParameterizedTest @ValueSource(strings = { "01.01.2017", "31.12.2017" }) void argumentConversionWithConverterTest( @JavaTimeConversionPattern("dd.MM.yyyy") LocalDate candidate) { log.info("argumentConversionWithConverterTest [{}]", candidate); }
@Order(18) @DisplayName("CsvSource的多个字段聚合到ArgumentsAccessor实例") @ParameterizedTest @CsvSource({ "Jane1, Doe1, BIG", "John1, Doe1, SMALL" }) void argumentsAccessorTest(ArgumentsAccessor arguments) { Person person = new Person(); person.setFirstName(arguments.getString(0)); person.setLastName(arguments.getString(1)); person.setType(arguments.get(2, Types.class)); log.info("argumentsAccessorTest [{}]", person); }
@Order(19) @DisplayName("CsvSource的多个字段,通过指定聚合类转为Person实例") @ParameterizedTest @CsvSource({ "Jane2, Doe2, SMALL", "John2, Doe2, UNKNOWN" }) void customAggregatorTest(@AggregateWith(PersonAggregator.class) Person person) { log.info("customAggregatorTest [{}]", person); }
package com.bolingcavalry.parameterized.service.impl;import org.junit.jupiter.api.extension.ParameterContext;import org.junit.jupiter.params.aggregator.ArgumentsAccessor;import org.junit.jupiter.params.aggregator.ArgumentsAggregationException;import org.junit.jupiter.params.aggregator.ArgumentsAggregator;public class PersonAggregator implements ArgumentsAggregator { @Override public Object aggregateArguments(ArgumentsAccessor arguments, ParameterContext context) throws ArgumentsAggregationException { Person person = new Person(); person.setFirstName(arguments.getString(0)); person.setLastName(arguments.getString(1)); person.setType(arguments.get(2, Types.class)); return person; }}
package com.bolingcavalry.parameterized.service.impl;import org.junit.jupiter.params.aggregator.AggregateWith;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.PARAMETER)@AggregateWith(PersonAggregator.class)public @interface CsvToPerson {}
@Order(20) @DisplayName("CsvSource的多个字段,通过指定聚合类转为Person实例(自定义注解)") @ParameterizedTest @CsvSource({ "Jane3, Doe3, BIG", "John3, Doe3, UNKNOWN" }) void customAggregatorAnnotationTest(@CsvToPerson Person person) { log.info("customAggregatorAnnotationTest [{}]", person); }
@Order(21) @DisplayName("CSV格式多条记录入参(自定义展示名称)") @ParameterizedTest(name = "序号 [{index}],fruit参数 [{0}],rank参数 [{1}]") @CsvSource({ "apple3, 31", "banana3, 32", "'lemon3, lime3', 0x3A" }) void csvSourceWithCustomDisplayNameTest(String fruit, int rank) { log.info("csvSourceWithCustomDisplayNameTest, fruit [{}], rank [{}]", fruit, rank); }
微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...
转载地址:http://uhtkz.baihongyu.com/