使用jersey时模拟java.util.logging.Logger

时间:2018-11-16 08:10:40

标签: java logging mocking jersey mockito

我们在我们的项目中使用了maven,jersey,Mockito,并使用了java.util.logging作为Logs。在对模拟对象运行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);
    }

}

1 个答案:

答案 0 :(得分:0)

问题出在这里

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

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

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