gpt4 book ai didi

java - 无法在 Play Framework 测试中从匿名回调内部传递异常

转载 作者:太空宇宙 更新时间:2023-11-04 07:08:18 25 4
gpt4 key购买 nike

我有以下集成测试作为 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); 抛出 OAuthProblemException,这是正确的。我的问题是,由于匿名内部回调,我无法向上传播异常并执行类似 @Test(expected = OAuthProblemException.class) 的操作,如我的代码中所示。

我可以捕获异常并在 catch 部分将测试标记为成功,但是 Play Framework 测试没有内置 success() 或 failure() 方法(我可以找到),导致我做了这样的愚蠢事情

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
}

我认为这看起来更好。如果您能想到替代解决方案,例如向上传播异常的方法或类似的方法,我很想听听。

(我傻了)

关于java - 无法在 Play Framework 测试中从匿名回调内部传递异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21003479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com