Java 如何为以Lambda为参数的ExecuterService execute方法编写测试用例
我想为下面复杂的代码覆盖率方法编写测试用例,除了lambda作为参数之外,我在执行方法方面面临着挑战Java 如何为以Lambda为参数的ExecuterService execute方法编写测试用例,java,mockito,junit5,Java,Mockito,Junit5,我想为下面复杂的代码覆盖率方法编写测试用例,除了lambda作为参数之外,我在执行方法方面面临着挑战 public CompletableFuture<SecurityToken> getSecurityTokenAsync(String audience) { CompletableFuture<SecurityToken> tokenGeneratingFuture = new CompletableFuture<>();
public CompletableFuture<SecurityToken> getSecurityTokenAsync(String audience) {
CompletableFuture<SecurityToken> tokenGeneratingFuture = new CompletableFuture<>();
Executors.newCachedThreadPool().execute(() -> {
try
{
MSICredentials credentials = new MSICredentials.withClientId("client-id");
String rawToken = credentials.getToken("key");
Date expiry = getExpirationDateTimeUtcFromToken(rawToken);
tokenGeneratingFuture.complete(new SecurityToken(SecurityTokenType.JWT, audience, rawToken, Instant.now(), expiry.toInstant()));
}
catch(IOException ioe)
{
TRACE_LOGGER.error("ManagedServiceIdentity token generation failed.", ioe);
tokenGeneratingFuture.completeExceptionally(ioe);
}
});
return tokenGeneratingFuture;
}
private Date getExpirationDateTimeuteFromToken(String token) throws ParseException {
JWT jwt = JWTParser-parse(token);
JWTClaimsSet claims jwt.getJWTClaimsSet();
return claims.getExpirationTime();
}
public CompletableFuture getSecurityTokenAsync(字符串访问群体){
CompletableFuture tokenGeneratingFuture=新的CompletableFuture();
Executors.newCachedThreadPool().execute(()->{
尝试
{
MSICredentials credentials=新的MSICredentials.withClientId(“客户端id”);
String rawToken=credentials.getToken(“key”);
日期到期=getExpirationDateTimeUtcFromToken(rawToken);
tokenGeneratingFuture.complete(新的SecurityToken(SecurityTokenType.JWT、访问群体、rawToken、Instant.now()、expiry.toInstant());
}
捕获(ioe异常ioe)
{
TRACE_LOGGER.error(“ManagedServiceIdentity令牌生成失败。”,ioe);
tokenGeneratingFuture.CompleteeException(ioe);
}
});
回归创造未来;
}
私有日期getExpirationDateTimeuteFromToken(字符串标记)引发异常{
JWT JWT=JWTParser解析(令牌);
JWTClaimsSet声明jwt.getJWTClaimsSet();
返回索赔。getExpirationTime();
}