我是Mockito的新手.
鉴于下面的类,我如何使用Mockito来验证someMethod在调用之后是否被调用了一次foo?
public class Foo
{
public void foo(){
Bar bar = new Bar();
bar.someMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
我想进行以下验证通话,
verify(bar, times(1)).someMethod();
Run Code Online (Sandbox Code Playgroud)
在哪里bar是一个模拟的实例Bar.
正如在这个链接中所讨论的:如何在log4j中创建自己的Appender?
为了在log4j 1.x中创建自定义appender,我们必须扩展AppenderSkeleton类并实现其append方法.
类似地我们如何在log4j2中创建自定义appender,因为我们没有扩展AppenderSkelton类,所有其他appender扩展AppenderBase类.
我正在测试一个方法,当出现问题时记录警告并返回null.
就像是:
private static final Logger log = Logger.getLogger(Clazz.class.getName());
....
if (file == null || !file.exists()) {
// if File not found
log.warn("File not found: "+file.toString());
} else if (!file.canWrite()) {
// if file is read only
log.warn("File is read-only: "+file.toString());
} else {
// all checks passed, can return an working file.
return file;
}
return null;
Run Code Online (Sandbox Code Playgroud)
我想测试junit是否发出了警告,除了返回null之外,在所有情况下(例如找不到文件,文件是只读的).
有任何想法吗?
谢谢,asaf :-)
我对Aaron的回答的实现(加上彼得的评论):
public class UnitTest {
...
@BeforeClass
public static void setUpOnce() {
appenders = new Vector<Appender>(2);
// …Run Code Online (Sandbox Code Playgroud) 我正在使用slf4j,我想对我的代码进行单元测试,以确保在某些条件下生成警告/错误日志消息.我宁愿这些是严格的单元测试,所以我不想从文件中提取日志配置以测试日志消息的生成.我正在使用的模拟框架是Mockito.
我有一个类似于foo的java 8应用程序:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Foo {
private final Logger log = LoggerFactory.getLogger(Foo.class);
public String something() {
log.info("doing foo test");
return "test";
}
}
Run Code Online (Sandbox Code Playgroud)
我正在编写一个JUnit(Junit 4.11)测试用例,如下所示:
public class FooTest {
private Foo foo;
@Before
public void setUp() throws Exception {
foo = new Foo();
}
@Test
public void testSomething() {
String result = foo.something();
assertEquals(result,"test");
}
}
Run Code Online (Sandbox Code Playgroud)
我的目标是编写一个测试用例来测试something方法的返回值和日志语句,以确保记录某些内容.我花了几个小时搜索网络来弄清楚如何设置junit来测试日志记录语句.我试过这个,这个,这个和这个方法无济于事.
我不知道这是不是我做错了什么.但这是我的代码基于最后一个例子:
public class FooTest {
private Foo …Run Code Online (Sandbox Code Playgroud) 我已经创建了一些自定义记录器,其中一些级别覆盖了Log4J2中的自定义记录器.我已按照http://logging.apache.org/log4j/2.x/manual/customloglevels.html上的指南进行操作.
我需要创建一些单元测试来验证事件是否在正确的自定义级别和配置上注册.
我很欣赏任何关于如何开始的提示.非常感谢.