Der*_*rek 6 grails unit-testing expected-exception
有人在grails单元测试中使用过这个注释吗?似乎没有为我工作.谢谢.d
更新:我下面测试的最后一行确实抛出了预期的异常.但是测试失败了(这里的堆栈跟踪太大......).我正在使用grails 1.2并在eclipse的junit runner中运行测试.也许grails使用的是早期版本的junit而不是4?
/**
* 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")
}
Run Code Online (Sandbox Code Playgroud)
Bur*_*ith 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")
}
}
Run Code Online (Sandbox Code Playgroud)
shouldFail()
实际上更方便,因为每次测试可以多次使用它,它会返回异常消息,因此您可以根据消息和异常进行断言.