我有一个类似于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";

}

}

我正在编写一个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");

}

}

我的目标是编写一个测试用例,测试某个方法的返回值和日志语句,以确保记录某些内容.我花了几个小时在网上搜索如何设置junit来测试日志语句.我试过this,this,this和this的方法无济于事.

我不知道这是不是我做错了什么.但这是基于最后一个例子的代码:

public class FooTest {

private Foo foo;

@Mock private Appender appender;

@Captor private ArgumentCaptor captor;

@Before

public void setUp() throws Exception {

foo = new Foo();

MockitoAnnotations.initMocks(this);

Logger.getRootLogger().addAppender(appender);

}

@After

public void tearDown() throws Exception {

Logger.getRootLogger().removeAllAppenders();

}

@Test

public void testSomething() {

String result = foo.something();

assertEquals(result,"test");

verify(appender).doAppend(((LoggingEvent) captor.capture()));

LoggingEvent loggingEvent = (LoggingEvent) captor.getValue();

assertEquals(loggingEvent.getRenderedMessage(), "doing foo test");

}

}

但是当我运行它时,我收到以下错误:

Wanted but not invoked:

appender.doAppend();

-> at .testSomething(FooTest.java:22)

Actually, there were zero interactions with this mock.

有没有更简单的方法来实现我想要的?如果这是最好的方式那么我做错了什么?

java junit 语句,java – Junit测试日志语句相关推荐

  1. java 计算器 junit测试_Java Junit测试

    使用junit做测试目的是尽量早的发现程序的bug,一个bug隐藏的时间越久,修复他的代价就越大. 1.Junit简介: Junit最初是由Erich Gamma 和 Kent Beck 编写的一个回 ...

  2. JAVAWEB(三)Java与数据库(JUnit、JUL、Maven、图书管理系统)

    使用JUnit进行单元测试 !!!!!! 前排提醒:我们要将pom.xml中的junit版本改成4.12及以上的! !!!!!! 首先一问:我们为什么需要单元测试? 随着我们的项目逐渐变大,比如我们之 ...

  3. JMeter工具:常用协议脚本开发(BeanShell Sampler, Debug Sampler, FTP/Java/JDBC请求, JUnit request, SOAP/XML-RPC)

    目录 1. BeanShell Sampler 1.1 BeanShell Timer:BeanShell定时器 1.2 BeanShell PreProcessor:BeanShell前置处理器 1 ...

  4. java which语句,java入门之表达式、语句、块

    表达式.语句和块是java语言的基础.运算符(Operator)用来计算值,它和变量(Variable)构成了表达式(Expression),表达式是语句(Statement)的核心部分,而语句又构成 ...

  5. java if and_Java运算符-if分支语句

    运算符 // 除号:/ int num1 = 12; int num2 = 5; int result1 = num1 / num2; System.out.println(result1); //2 ...

  6. 【Java】面试官灵魂拷问:if语句执行完else语句真的不会再执行吗?

    写在前面 最近跳槽找工作的朋友确实不少,遇到的面试题也是千奇百怪,这不,一名读者面试时,被面试官问到了一个直击灵魂的问题:if 语句执行完else语句真的不会再执行吗?这个奇葩的问题把这名读者问倒了! ...

  7. IDEA 2022.2.1 Beta 2发布:新增支持Java 18、增强JUnit 5的支持

    近日,IDEA 2022.1的Beta 2版本发布了!下面我们一起来看看对于我们Java开发者来说,有哪些重要的更新内容. Java增强 随着Java 18的正式发布,IDEA也在该版本中迅速跟进. ...

  8. Java SE7新特性之try-with-resources语句

     try-with-resources语句是一个声明一个或多个资源的 try 语句.一个资源作为一个对象,必须在程序结束之后随之关闭. try-with-resources语句确保在语句的最后每个资源 ...

  9. java最基础语句,Java基础:Java语句

    Java语句 -------关键语句介绍 一.while语句 一般形式: while(条件表达式) { 语句体--- } 执行过程: 条件表达式为真,执行语句体.否则,退出! 二.do while语句 ...

最新文章

  1. 47分钟,BERT训练又破全新纪录!英伟达512个GPU训练83亿参数GPT-2 8B
  2. oracle hr样本模式,Oracle 样本模式 HR
  3. java学习(50):子类继承会优先调用父类的构造器
  4. django-分页的演示
  5. Java面试:Java面试总结PDF版
  6. CUDA内存分配、释放、传输,固定内存
  7. svm工具箱快速入手简易教程
  8. Qt VS中设置.ui文件的生成的.h的目录
  9. 朴素贝叶斯分类算法(Naive Bayesian classification)
  10. 浅谈游戏《Hollow Knight空洞骑士》
  11. Arm 中国原 CEO 被“罢免”,新指定“官方”:已获员工大力支持
  12. oracle设置默认角色,oracle的用户和角色管理
  13. Git学习8:Git分支操作
  14. Kubernetes 如何重塑虚拟机
  15. select后面的子查询
  16. Python计算:sympy解数学方程
  17. 特殊数字符号大全,word 数学符号
  18. 多路温度采集控制系统(2)需求分析
  19. android 4.5屏幕,屏幕大也不怕 4.5吋起大屏续航手机推荐
  20. Java毕设项目-商城管理系统-基于J2EE/SSM化妆品商城系统的设计与实现

热门文章

  1. SPI接口的FPGA实现(一)——SPI接口的相关基础知识
  2. 一建二建证书讲解宣传
  3. 中国国际视听大会即将在北京召开,国产8K影视品牌齐聚
  4. 新版PageOffice为什么用弹出窗口的方式打开文件
  5. quic java_HTTP3.0(QUIC的实现机制)
  6. ABAQUS软件实训(九):实体结构静力学分析
  7. mac不同窗口间切换的快捷键
  8. php调用新浪短链接API转短链接
  9. 我在北京,我不在北京
  10. MTK Android 9.0(Android P) + kernel-4.9 默认关闭DM Verity 和secure boot 解决无法adb remount的问题