Springboot ConstraintValidator无法读取MockitoJUnitRunner或SpringBoot的configurationProperties

时间:2018-06-28 03:45:23

标签: spring-boot enums mockito constraints spring-boot-test

我写了一个ConstraintValidator,它将从yaml文件中读取键值对。该代码在运行时可正常运行,但在测试期间不起作用。我尝试了MockitoJUnitRunner和SpringRunner类。

我在CustomConverters实现中使用了相同的逻辑,该逻辑能够在运行时和测试期间读取键值对。

请告知您如何使用配置属性测试ConstraintValidator。

代码:

 @ConfigurationProperties(prefix="gender")
    public class GenderValidator implements ConstraintValidator<Gender, String> {

    private Map<String, String> type = new HashMap<String, String>();

    @Override
    public void initialize(Gender gender) {

    }

    @Override
    public boolean isValid(String value, ConstraintValidatorContext ctx) {      
        return getType().containsKey(value);
    }
    public Map<String, String> getType() {return type; }   
    }

配置

 gender:
    type:
      M: male
      F: female

TestCode:

 Set<ConstraintViolation<GenderDetails>> constraintViolations =
                validator.validate(payload);
        assertThat (constraintViolations.isEmpty(), is(true) );

AssertThat总是返回错误。

注意:我已经在配置类下配置了PropertySourcesPlaceholderConfigurer,当我测试CustomConverter时可以正常工作。

感谢您的帮助。

0 个答案:

没有答案