有人在grails单元测试中使用了此注释吗?
似乎没有为我工作。
谢谢。
d
更新:我下面的测试的最后一行确实引发了预期的异常。但是,测试失败(堆栈跟踪对于此处而言太大...)。我正在使用grails 1.2,并在Eclipse的junit运行器中运行测试。也许grails正在使用比4更低的junit版本?
/**
* 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")
}
最佳答案
当前仅支持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()
实际上更方便,因为您可以在每个测试中多次使用ojit_code,并且ojit_code返回异常消息,因此您可以基于消息和异常进行断言。关于unit-testing - Grails单元测试中的@ExpectedException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1982457/