使用球衣时模拟 java.util.logging.Logger

Mocking java.util.logging.Logger while using jersey

我们在项目中使用了 maven、jersey、Mockito,java.util.logging 用于日志。 运行 Junit 使用模拟对象进行测试时,log.log() 方法抛出 InvalidUseOfMatchersException。下面是示例代码。

import javax.inject.Inject;
import java.util.logging.Logger;
import java.util.logging.Level;

public class Sample{

    @Inject
    Logger log;

    public String runLog(String name){
        log.log(Level.INFO, "Name = "+name);
    return "name";
    }
}

public class SampleTest{

    @InjectMocks
    Sample sample;

    @Mock
    Logger log;


    public void setup() throws Exception(){
        MockitoAnnotations.initiMocks(this);
    }

    @Test
    public void testRunLog(){
        doNothing().when(log).log(any(Level.class), anyString());
        String s = sample.runLog(anyString());
        assertNotNull(s);
    }

}

问题是:

String s = sample.runLog(anyString());

您只能在 verifywhen 方法中使用 anyString(以及所有其他匹配器方法)。

如果您不关心传递的确切值,则传递一些常量或随机字符串。