2017-05-01 1 views
1

예를 들어, 다음과 같은 주석이 달린 도메인 모델을 테스트하고있는 테스트 클래스가 있습니다. 내 테스트 클래스에서 @NotNullHibernate Validator : 위반 메시지 언어

은 내가 먼저

Set<ConstraintViolation<Person>> violations = validator.validate(aPerson); 

이 있습니다 (사람을 말할 수) 내가 도메인 모델을 테스트하고 JUnit 테스트를

private static Validator validator; 

@BeforeClass 
public static void setup() { 
    validator = Validation.buildDefaultValidatorFactory().getValidator(); 
} 

나중에 검증을 얻고있다 첫 번째 위반 내용을 검색하고 싶습니다.

String violationMessage = violations.iterator().next().getMessage() 

나는 사용자 지정 violati를 설정하지 않았습니다. @NotNull 어노테이션에있는 on 메시지. 따라서 hibernate validator는 hibernate-validator-jar에있는 Resource Bundle에서 기본 메시지를 가져올 것이다. 내 경로는 다음과 같습니다

hibernate-validator-5.3.5.Final.jar 
    - org 
     - hibernate 
      - validator 
       ... 
       ResourceBundle 'Validation Messages' 

을이 자원 번들에서 (영어, 독일어, 프랑스어, ...) 지원 꽤 많은 언어

@NotNull 위반 메시지가 영어

독일

javax.validation.constraints.NotNull.message  = darf nicht null sein 

@NotNull 위반 메시지3210

javax.validation.constraints.NotNull.message  = may not be null 

질문 :

내가 테스트입니다 때, 어떻게 최대 절전 모드 검사기는 자원 번들에서 위반 메시지에 대한 특정 언어를 선택 적용 할 수 있습니다? 지금은 영어 위반 메시지가 표시됩니다. 그러나, 다른 기계 독일어. 참조 문서에서 응축

답변

1

요약 : 번들의 메시지를 찾을 때 기본적으로

, JVM의 기본 로케일 (로케일 #의 getDefault는())이 사용됩니다.

당신의 OS/사용자 seetings와 소스 코드 나 바이올린을 건드리지 않고, 스페인어 메시지에 대해이 시도 :

java -Duser.country=ES -Duser.language=es 

Hibernate Validator 5.1 Reference

2

GKR의 대답은 올바른 것입니다.

유용 할 수 있습니다

추가 정보 : 정보를 추가하기위한

<plugin> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>${maven-surefire-plugin.version}</version> 
    <configuration> 
     <forkMode>once</forkMode> 
     <argLine>-Duser.language=en</argLine> 
    </configuration> 
</plugin> 
+0

감사합니다 : 당신은 메이븐과 확실한 플러그인을 사용하는 경우, 당신이 그런 식으로 뭔가를 할 필요가 – Dachstein