2014-12-24 3 views
5

मैं वसंत एमवीसी का उपयोग कर रहा हूं और मेरे डोमेन में मेरे पास हाइबरनेट वैलिडेटर है, और मेरे पास कुछ परीक्षण है जो ग्रहण में गुजरता है, लेकिन कंसोल में नहीं है (ग्रेडल का उपयोग करके)।विभिन्न प्रकार के अपवाद जबकि मैं ग्रहण और कंसोल दोनों का परीक्षण करता हूं?

ग्रहण में मैंने केवल 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 और एक एम्बेडेड डेटाबेस (HSQL), (वेब ​​अनुप्रयोग मैं MySQL का उपयोग के लिए) का उपयोग करें। अपने परीक्षण है, जो अपवाद फेंक से कुछ हैं:

@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 क्योंकि यह एक अपवाद है कि नहीं होती है, जो @Pattern(..) का मतलब बिल्कुल भी काम नहीं कर रहा उम्मीद है। और परीक्षण त्रुटि है के बाकी के लिए:

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

जिज्ञासा से बाहर ... आप ईमेल को सत्यापित करने के लिए पैटर्न का उपयोग क्यों कर रहे हैं? ईमेल प्रारूप को सत्यापित करने के लिए हाइबरनेट सत्यापनकर्ता के पास '@ ईमेल' एनोटेशन है। –

+0

@ बोहुस्लावबुर्गगार्ट को यह नहीं पता था, धन्यवाद –

उत्तर

1

दावा त्रुटि के लिए एक संभावित कारण कोड में कहीं असफल जावा assert हो सकता है। ग्रहण डिफ़ॉल्ट रूप से सक्षम assertions के साथ नहीं चलाता है, जबकि Gradle परीक्षण प्रक्रिया करता है।

test.enableAssertions = false 

पुनश्च:: आप करने के लिए थोड़ा और स्टैकट्रेस में देखना चाहते हो सकता है

यदि यह समस्या है, तो आप Gradle में दावे को अक्षम करने का परीक्षण करती है, अपने build.gradle फ़ाइल में इस जोड़कर कोशिश कर सकते हैं पुष्टि करने के लिए दावा त्रुटि का स्रोत खोजें।

संबंधित मुद्दे