2009-12-30 13 views
6

किसी ने भी इस एनोटेशन का उपयोग grails यूनिट परीक्षणों में किया था? मेरे लिए काम नहीं कर रहा था। धन्यवाद। डी@ graced इकाई परीक्षणों में एक्सपेक्टेड अपवाद

अद्यतन: नीचे दिए गए मेरे परीक्षण की अंतिम पंक्ति अपेक्षित अपवाद फेंक देती है। हालांकि परीक्षण विफल रहता है (यहां के लिए स्टैक ट्रेस बहुत बड़ा है ...)। मैं grails 1.2 का उपयोग कर रहा हूँ और ग्रहण के जूनिट धावक में परीक्षण चला रहा हूँ। शायद grails जून से पहले जूनिट के पहले संस्करण का उपयोग कर रहा है?

/** 
* Get the EC by a manager of a different company. Should throw exception 
*/ 
@ExpectedException(ServiceAuthorizationException.class) 
void testGetEcByNonOwnerManagerOfDifferentCompany() { 
    mockDomain(ExpenseClaim , [new ExpenseClaim(id:"1",narrative:"marksClaim", employee:userMark, company:dereksCompany)])  

    def authControl = mockFor(AuthenticateService) 
    authControl.demand.userDomain(1..1) {-> otherUserMgr } 
    authControl.demand.ifAllGranted(1..1) {String arg1 -> return "ROLE_COMPANYMANAGER".equals(arg1) } //returns true 
    def testService = new ExpenseClaimService() 
    testService.authenticateService = authControl.createMock() 
    def thrown = false 
    testService.getExpenseClaim("1") 
} 
+2

क्या आप समझा सकते हैं कि "काम नहीं किया" से आपका क्या मतलब है? –

+0

हाय जॉन, सहायता के लिए धन्यवाद। हां, मुझे थोड़ी सी जानकारी की कमी है .... मैं एक उत्तर जोड़ूंगा क्योंकि मैं इस टिप्पणी बॉक्स में फिट नहीं कर सकता। डी – Derek

+0

आह हाँ इसके जूनिट 3.4.2 का उपयोग कर रहा है। मुझे लगता है कि यह केवल जूनिट 4 के साथ काम करता है। मुझे लगता है कि यह जवाब है – Derek

उत्तर

17

केवल JUnit 3 वर्तमान में समर्थित है, इसलिए shouldFail() बजाय का उपयोग करें:

void testGetEcByNonOwnerManagerOfDifferentCompany() { 

    shouldFail(ServiceAuthorizationException) { 
    mockDomain(ExpenseClaim , [new ExpenseClaim(id:"1", 
           narrative:"marksClaim", employee:userMark, 
           company:dereksCompany)])  

    def authControl = mockFor(AuthenticateService) 
    authControl.demand.userDomain(1..1) {-> otherUserMgr } 
    authControl.demand.ifAllGranted(1..1) {String arg1 -> 
     "ROLE_COMPANYMANAGER".equals(arg1) } //returns true 
    def testService = new ExpenseClaimService() 
    testService.authenticateService = authControl.createMock() 
    testService.getExpenseClaim("1") 
    } 
} 

shouldFail() वास्तव में और अधिक सुविधाजनक है क्योंकि आप इसे एक बार परीक्षण प्रति अधिक से अधिक उपयोग कर सकते हैं, और यह तो आप अपवाद संदेश देता है संदेश के साथ ही अपवाद के आधार पर जोर दे सकते हैं।

+1

धन्यवाद बर्ट! सही काम करता है। – Derek

+0

क्या यह अभी भी 1.3.7 के रूप में लागू है? – dbrin

+1

2.0 के रूप में आप जुनीट 4 का उपयोग कर सकते हैं, लेकिन जैसा कि मैंने कहा था कि मैं अभी भी कन्फेल का उपयोग करूँगा क्योंकि यह इतना लचीला है। –

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