美文网首页程序员@IT·互联网
test assert-01-Google Truth 断言

test assert-01-Google Truth 断言

作者: 老马啸西风2020 | 来源:发表于2024-01-08 22:45 被阅读0次

    拓展阅读

    junit5-05-assert

    junit5 系列

    基于 junit5 实现 junitperf 源码分析

    Auto generate mock data for java test.(便于 Java 测试自动生成对象信息)

    Junit performance rely on junit5 and jdk8+.(java 性能测试框架。性能测试。压测。测试报告生成。)

    Truth

    Truth 是用于Java测试的断言框架,灵感来自于FEST,并受到一些可扩展性需求的驱动,几乎完全由谷歌员工在业余时间编写,或者作为Java核心图书馆管理员的身份做出贡献。

    作用

    作为工程师,我们花费大部分的时间来阅读现有的代码,而不是编写新的代码。

    Truth 是一个开源的、流畅的Java测试框架,使你的测试断言和失败消息更有可读性

    Quick Start

    完整代码地址:google true demo

    引入

    • 引入 jar
    <dependency>
        <groupId>com.google.truth</groupId>
        <artifactId>truth</artifactId>
        <version>0.37</version>
        <scope>test</scope>
    </dependency>
    

    对比

    • 测试断言和失败消息更有可读性
    /**
     * 由Truth编写的断言很容易从左到右读取,而由Junit编写的例子需要“精神回溯”。
     */
    @Test
    public void containsTruthTest() {
        Map<Integer, String> monthMap = new HashMap<>();
        monthMap.put(3, "March");
    
        assertEquals("March", monthMap.get(3)); // JUnit
        assertThat(monthMap).containsEntry(3, "March");  // Truth
    }
    
    • 有用的错误提示
    /**
     * 增加有用的默认失败消息。
     */
    @Test
    public void usefulMsgTest() {
        ImmutableSet<String> colors = ImmutableSet.of("red", "green", "blue", "yellow");
    
    //        assertTrue(colors.contains("orange"));  // JUnit
        assertThat(colors).contains("orange");  // Truth
    }
    

    (1) Junit

    java.lang.AssertionError
        at org.junit.Assert.fail(Assert.java:86)
        at org.junit.Assert.assertTrue(Assert.java:41)
        at org.junit.Assert.assertTrue(Assert.java:52)
        at com.ryo.jdk.truth.TruthTest.usefulMsgTest(TruthTest.java:41)
        ...
    

    (2) Truth

    java.lang.AssertionError: <[red, green, blue, yellow]> should have contained <orange>
    
        at com.ryo.jdk.truth.TruthTest.usefulMsgTest(TruthTest.java:42)
        ...
    
    • 对 java 常见类型的支持
    1. JDK 类型:对象,基本类型,数组,字符串,类,可比较类型,可迭代类型,集合,列表,集合,图

    2. Guava: 可选值

    3. 其他:异常,迭代器,多重映射,无符号整型,无符号长整型

    • 可拓展

    用户可以自定义一个 Truth 主题,以对你自定义的类型进行流畅的断言。

    通过创建你自定义的主题,你的断言API和你的失败消息都可以是特定领域的。

    相关文章

      网友评论

        本文标题:test assert-01-Google Truth 断言

        本文链接:https://www.haomeiwen.com/subject/xayondtx.html