关于CacheBuilder的问题也许有人可以帮助:
我有一个这样定义的缓存:
private final Cache<String, ServiceClient> SERVICE_CLIENT_CACHE = CacheBuilder.newBuilder()
.maximumSize(1000)
.build();
从测试
调用的newRetryingClient
类中的访问器逻辑try {
return SERVICE_CLIENT_CACHE.get(clientConfigQualifier,
() -> newClient(clientConfigQualifier));
} catch (final ExecutionException ignored) {
throw new RuntimeException(ignored);
}
}
尝试验证缓存是否与测试一起工作,结果导致失败,因为不同的对象…
@Test
public void newRetryingClientWithMaterials() {
final clientFactory clientFactory = new clientFactory(authClient, mock(Identity.class));
final Client client1 = clientFactory.newRetryingClient(QUALIFIER);
final Client client2 = clientFactory.newRetryingClient(QUALIFIER);
assertSame(client1, client2);
}
测试结果
org.opentest4j.AssertionFailedError:
Expected :com.place.thing.client.clientImpl@49d5c751
Actual :com.place.thing.client.clienttImpl@40e90634
任何想法,如果有一个问题的实现或我期望从断言相同的错误行为?
您想测试两个对象是否引用相同的引用,或者您想检查它们是否相等?
参见assertSame
和assertEqual
,但最重要的是阅读[Object#equals(Object)][3]
和==
的区别。