使用球衣时模拟 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());
您只能在 verify
和 when
方法中使用 anyString
(以及所有其他匹配器方法)。
如果您不关心传递的确切值,则传递一些常量或随机字符串。
我们在项目中使用了 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());
您只能在 verify
和 when
方法中使用 anyString
(以及所有其他匹配器方法)。
如果您不关心传递的确切值,则传递一些常量或随机字符串。