Кто-либо использовал эту аннотацию в модульных тестах чаш Грааля? Казалось, не работал на меня.Спасибо. D
Обновление: последняя строка моего теста ниже действительно бросает ожидаемое исключение. Однако тестовые сбои (Отслеживание стека, слишком большое для здесь...). Я использую чаши Грааля 1.2 и запускаю тест в junit бегуне затмения. Возможно, чаши Грааля используют более раннюю версию 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")
}
В настоящее время поддерживается только 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()
на самом деле более удобно, так как вы можете использовать его более одного раза за тест, и он возвращает сообщение об исключении, так что вы можете утверждать, основываясь на этом сообщении, а также на исключении.