2014-12-24 1 views
5

스프링 mvc를 사용하고 있으며 내 도메인에 Hibernate Validator가 있고 Eclipse에서 전달하는 테스트가 있지만 콘솔에서는 사용하지 않습니다 (gradle 사용).일식과 콘솔 테스트를 실행하는 동안 다른 종류의 예외가 있습니까?

이클립스에서는 java-7-openjdk-i386 만 설치했으나 콘솔에는 내가 사용하는 java version "1.8.0_25"이 있는데, 이것에 뭔가가 있는지는 잘 모르겠다. 내 도메인의

부분은 다음 테스트를 위해

@Entity 
@Table(name = "users", uniqueConstraints = { 
     @UniqueConstraint(columnNames = "username"), 
     @UniqueConstraint(columnNames = "email") }) 
public class User { 


    @NotNull 
    @Pattern(regexp = "(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])") 
    @Column(name = "email") 
    private String email; 


    @NotNull 
    @Size(min = 6, max = 15) 
    @Column(name = "username") 
    private String username; 


    @NotNull 
    @Column(name = "role") 
    private String role; 

    ... 
} 

, 내가 junit4와 (내가 MySQL을 사용 웹 응용 프로그램) 임베디드 데이터베이스 (HSQL)를 사용합니다. 예외를 던져 내 테스트의 일부는 다음과 같습니다 전혀 작동하지 않는 @Pattern(..)을 의미 발생하지 않는 예외를 기대하기 때문에

@Test(expected=javax.validation.ConstraintViolationException.class) 
public void userEmailMustBeValid() { 
    User p = new User("jdoemail.com", "John", "Doe", "johndoe", "johndoe", "USER_ROLE"); 
    userService.create(p); 
} 

@Test(expected=javax.validation.ConstraintViolationException.class) 
public void userEmailCanNotBeNull() { 
    User p = new User(null, "John", "Doe", "johndoe", "johndoe", "USER_ROLE"); 
    userService.create(p); 
} 

@Test(expected=javax.validation.ConstraintViolationException.class) 
public void userUsernameShouldBeNotNull() { 
    User p = new User("[email protected]", "John", "Roe", null, "johnroe", "USER_ROLE"); 
    userService.create(p); 
} 

@Test(expected=javax.validation.ConstraintViolationException.class) 
public void userRoleShouldBeNotNull() { 
    User p = new User("[email protected]", "John", "Roe", "johnroe", "johnroe", null); 
    userService.create(p); 
} 

그래서, 첫 번째 테스트 userEmailMustBeValid에 대한 assertionError있다. 그리고 오류가있는 시험의 나머지 :

Unexpected exception, expected<javax.validation.ConstraintViolationException> but was<org.hibernate.exception.ConstraintViolationException> 

그리고 HSQL DB 및 최대 절전 모드는 다음과 같이 구성됩니다

<jdbc:embedded-database id="dataSource" type="HSQL"> 
    <jdbc:script location="classpath:/config/schema.sql"/> 
    <jdbc:script location="classpath:/config/test-data.sql"/> 
</jdbc:embedded-database> 

<!-- Hibernate session factory --> 
<beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <beans:property name="dataSource" ref="dataSource"/> 
    <!-- Annotated hibernate clasess --> 
    <beans:property name="packagesToScan" value="org.munaycoop.taskmanager.domains"/> 

    <beans:property name="hibernateProperties"> 
     <beans:props> 
      <beans:prop key="hibernate.cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</beans:prop> 
      <beans:prop key="hibernate.show_sql">true</beans:prop> 
      <beans:prop key="hibernate.hbm2ddl.auto">update</beans:prop> 
     </beans:props> 
    </beans:property> 

</beans:bean> 

그래서, 여기에 어떤 문제가 있습니까?

+2

호기심에서 벗어나 ... 왜 이메일을 확인하기 위해 패턴을 사용하고 있습니까? Hibernate validator는 전자 메일 포맷을 검증하기위한'@ Email' 주석을 가지고있다. –

+0

@BohuslavBurghardt 님, 감사합니다. 감사합니다. –

답변

1

어설 션 오류의 가능한 원인 중 하나가 코드 어딘가에있는 assert 오류 일 수 있습니다. Eclipse는 기본적으로 활성화 된 표명과 함께 실행되지 않지만 Gradle 테스트 프로세스는 실행됩니다.

test.enableAssertions = false 

추신 : 당신은에 조금 더 스택 트레이스를 조사 할 수 있습니다

는이 문제가있는 경우, 당신은 당신의 build.gradle 파일이 추가하여, 테스트 Gradle을의 주장을 해제 시도 할 수 있습니다 확인하려면 어설 션 오류의 소스를 찾으십시오.

관련 문제