Не удается пройти исключение из внутреннего анонимного обратного вызова в Play Framework Test

StackOverflow https://stackoverflow.com//questions/21003479

Вопрос

У меня есть следующий тест интеграции в составе проекта Play Framework.

@Test(expected = OAuthProblemException.class)
public void testFailedCredentials() throws OAuthProblemException, OAuthSystemException {
    running(testServer(3333, fakeApplication(inMemoryDatabase())), HTMLUNIT, new F.Callback<TestBrowser>() {
        public void invoke(TestBrowser browser) throws OAuthProblemException, OAuthSystemException {
            OAuthClientRequest request = OAuthClientRequest
                    .tokenLocation("http://localhost:3333/oauth2/access_token")
                    .setGrantType(GrantType.PASSWORD)
                    .setClientId("client_id")
                    .setClientSecret("client_secret")
                    .setUsername("username")
                    .setPassword("password_should_not_pass")
                    .buildBodyMessage();

            OAuthClient oAuthClient = new OAuthClient(new URLConnectionClient());

            oAuthClient.accessToken(request); //throws OAuthProblemException
        }
    });
}
.

Линия oAuthClient.accessToken(request); бросает OAUTHPROBLEMEXCECTION, что правильно.Моя проблема в том, что из-за анонимного внутреннего обратного вызова у меня нет возможности распространять исключение и сделать что-то вроде генеракодицетагкода, как в моем коде.

Я мог бы завершить исключение и отметить тест как успех внутри раздела Catch, но PLAY Framework Testing не построен в методах успеха () или не удается (что я мог найти), в результате чего я делал что-то глупоеКак это

try {
    oAuthClient.accessToken(request);
    assertThat("This credentials should fail").isEmpty();//Force a fail
} catch (OAuthProblemException e) {
    assertThat(e).isInstanceOf(OAuthProblemException.class);//Force a success. I could probably skip this line
}
.

Я не думаю, что это выглядит очень интуитивно понятно.Любые предложения Как решить это лучше?

Спасибо!

Это было полезно?

Решение

ОК, нашел функцию fail (): -)

import static org.junit.Assert.*;
.

с этим я могу сделать следующее:

try {
    oAuthClient.accessToken(request);
    fail();
} catch (OAuthProblemException e) {
    //success
}
.

Что выглядит намного лучше, я думаю.Если вы можете подумать о альтернативных решениях, таких как способ распространения исключения или похожи, я хотел бы услышать об этом.

(глупо меня)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top