Domanda

Ho il seguente test di integrazione come parte di un progetto quadro di riproduzione.

@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
        }
    });
}
.

La linea oAuthClient.accessToken(request); lancia OAUTHPROBLEMException, che è corretta.Il mio problema è che a causa dell'anonimo callback interiore, non ho la possibilità di propagare l'eccezione e fare qualcosa come @Test(expected = OAuthProblemException.class) come nel mio codice.

Ho potuto catturare l'eccezione e segnare il test come successo all'interno della sezione Catch, ma i test del quadro di riproduzione non hanno integrato nei metodi di successo () o guasto () (che potrei trovare), risultando in me facendo qualcosa di stupidocome questo

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
}
.

Non penso che questo sia molto intuitivo.Qualche suggerimento Come risolverlo in modo migliore?

Grazie!

È stato utile?

Soluzione

OK, ha trovato la funzione Fail (): -)

import static org.junit.Assert.*;
.

Con questo posso fare quanto segue:

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

che sembra molto meglio penso.Se riesci a pensare a soluzioni alternative, come un modo per propagare l'eccezione o simili, mi piacerebbe sentirlo.

(stupido me)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top