如果我将Supplier
与Suppliers::memoize(Supplier<T> delegate)
结合使用,那么测试它的最佳方式是什么?
例如,假设我有以下内容:
private static final Supplier<String> ENVIRONMENT_SUPPLIER = Suppliers.memoize(new Supplier<String>() {
@Override
public String get() {
String value = "";// actually something time consuming
return value;
}
});
对我而言,最明显的方法似乎是将供应商提取到自己的(内部)类中并对其进行测试。出于某种原因,这对我来说似乎有点难看,当我最终升级到Java 8时看起来有点傻。
答案 0 :(得分:1)
在这里结合选择。
首先,您可以将ENVIRONMENT_SUPPLIER
声明为默认范围。在这种情况下,测试(应该在同一个包中)可以访问它并可以测试它。
其次,也许更好,如果它是一个复杂的类,做了耗时的工作,将它分解成自己的类是个好主意。这不仅允许访问测试,还允许您在测试包装类时使用模拟。由于它已经实现了一个接口(Supplier
),因此很容易实现。