千家信息网

Java登录单元测试实例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"Java登录单元测试实例分析",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java登录单元测试实例分析"吧!日志记录是调试过程中不可避免
千家信息网最后更新 2026年11月01日Java登录单元测试实例分析

本篇内容主要讲解"Java登录单元测试实例分析",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Java登录单元测试实例分析"吧!

日志记录是调试过程中不可避免的一部分。好吧,至少在现代高级编程语言和架构中是这样。这不是三十年前的事了,而是现在。有时我们跟踪变量,虽然这样做的很少。更多的时候我们只是将它们打印到控制台。此外,我们不只是使用println控制台打印或我们拥有的任何东西来打印它们;相反,我们将消息发送到日志框架,该框架处理控制台或任何其他日志记录目的地,如文件。这种框架的美妙之处在于我们不需要在调试完成后删除日志--我们只需配置框架以抑制生产环境中的所有调试级别的消息。一些日志记录可能发生在单元测试中,我们是否也把它们留下或者不留下?

这是一个示例(它是对CalcTest.java 中来自Polystat的真实单元测试的简化,Polystat是我们目前正在研究的静态分析器):

import com.jcabi.log.Logger;import com.jcabi.xml.XML;import org.hamcrest.MatcherAssert;import org.hamcrest.Matchers;import org.junit.jupiter.api.Test;public final class FooTest {  @Test  public void buildsSimpleXml() {    final XML xml = new Foo().build();    Logger.debug(this, "This is the XML:\n%s", xml.toString());    MatcherAssert.assertThat(      xml,      Matchers.notNullValue()    );  }}

这是 Java,我将JUnit5 + Hamcrest与我自己的日志记录框架jcabi-log一起使用,它是Slf4j的装饰器,使用Log4j打印到控制台。

这里发生了什么?有一个Foo带有方法的类build(),它生成一个 XML 文档(我使用的是jcabi-xml库,它是JDK DOM的装饰器)。然后,单元测试将 XML 文档的内容打印到控制台并做出一个非常愚蠢的断言:文档不是 NULL。这很愚蠢,因为如果它是 NULL,那么日志语句在.toString()调用时就会失败。

我是这段代码的开发者,所以我知道发生了什么:我懒得写一个正确的断言,它会查看 XML 文档并确保里面有正确的元素。我只是将它打印到控制台,目视确认其有效性并称其为一天。如果我有更多的时间,这就是我编写更好的单元测试的方式(我刚刚对 Polystat 测试进行了改进):

import com.jcabi.matchers.XhtmlMatchers;import org.hamcrest.MatcherAssert;import org.junit.jupiter.api.Test;public final class FooTest {  @Test  public void buildsSimpleXml() {    MatcherAssert.assertThat(      XhtmlMatchers.xhtml(new Foo().build()),      XhtmlMatchers.hasXPath("//foo")    );  }}

现在,构建了 XML 文档,然后测试其中是否存在//foo XPath。只有在断言失败的情况下,才会将文档的内容打印到控制台。如果 XML 具有所需的 XPath,则不会有控制台输出,这对未来的开发人员意味着没有噪音。

此外,现在它是一个单语句测试,这本身就是一种很好的做法。

回顾我测试和记录的经验,我认为记录单元测试是一个坏主意。有时不可避免,因为我们懒惰或根本没有足够的时间,但仍然很糟糕。日志记录帮助我们在视觉上确认输出的正确性,但它从项目中带走了这些知识。那些将在稍后进行测试的人不会知道我们在那里看到了什么。他们会在控制台看到输出,但不知道它是否仍然符合我在撰写本文时的期望。

我会说单元测试中的每个日志记录行都是来自其作者的消息:"我对我现在看到的数据有所了解,但我懒得告诉你,你只需要相信我好的。"

我建议我们不要在我们的代码中留下这样的消息。

到此,相信大家对"Java登录单元测试实例分析"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

测试 单元 控制台 日志 控制 文档 框架 分析 内容 消息 实例 实例分析 登录 只是 更多 输出 愚蠢 不可避免 代码 就是 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技有限公司 互联网科技卖菜 高科技与互联网 国外互联网科技网站 哈尔滨新华互联网科技 中正互联网科技招聘 成都互联网科技公司100强 广州恒生互联网科技有限 佳云科技和互联网广告 河南猎农互联网科技有限公司 千方科技属于互联网企业吗 互联网科技和法律行业 互联网在线教育科技创业 江苏互联网智能科技软件 工业互联网科技创业 广州燕处互联网科技有限公司 易企秀互联网科技是做什么的 北京互联网科技类企业分布 互联网领先科技成果宣传视频 中国主要互联网科技公司 湖北九亚互联网络科技有限公司 朗新科技与工业互联网 融贸通互联网科技 互联网和黑科技的看法 世界互联网科技公司市值排名 华夏恒生互联网科技013171 中和天地互联网科技有限公司 互联网金融科技公司的优势 皮皮虾互联网科技有限公司 中国科技和美国互联网
0