【发布时间】:2016-04-02 05:38:51
【问题描述】:
我有一个实用类,它是最终类。那里我用注入来注入LOGGER。
public final class Utilities {
@Inject
private static Logger.ALogger LOGGER;
private Utilities() {
//this is the default constructor. so there is no implementation
}
public static String convertToURl(string input){
try{
//do some job
}catch(IllegalArgumentException ex){
LOGGER.error("Invalid Format", ex);
}
}
}
当我为此方法编写单元测试时,我必须模拟 LOGGER,否则它将引发空指针异常。我如何在不创建此类的实例的情况下模拟此 LOGGER。我试图对变量进行白盒化。但它只适用于实例?
【问题讨论】:
-
默认情况下,guice 不允许静态注入。但是我们可以请求this
-
我不知道。我也没有用过,但是如果它能够注入静态字段,也许可以用它在单元测试中注入一个模拟记录器?
-
嗯,最简单的解决方法是使变量包私有并将测试放在同一个包中,但必须有更好的方法。
标签: java unit-testing mockito powermock