@ExpectedException в модульных тестах чаш Грааля

Кто-либо использовал эту аннотацию в модульных тестах чаш Грааля? Казалось, не работал на меня.Спасибо. 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")
}
6
задан Derek 30 December 2009 в 21:16
поделиться

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() на самом деле более удобно, так как вы можете использовать его более одного раза за тест, и он возвращает сообщение об исключении, так что вы можете утверждать, основываясь на этом сообщении, а также на исключении.

.
17
ответ дан 8 December 2019 в 13:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: