TestNG断言

TestNG中的Assertion,也是断言。
断言是测试中最难写的部分。

  • Assert类(硬断言)

断言类是Assert.java,里面有多个静态方法被称为硬断言,硬断言就是,如果运行到折行断言失败,即使该用例,后面还有其他代码行,也不会继续执行下去

Assert.assertEquals( expected,actual)

image.png

TestNG中提供了多个33个assertEquals()方法,主要是匹配不同的数据类型和集合类操作。

举例:

package com.example.lenovo.myapplication;


import org.testng.annotations.Test;

import static junit.framework.TestCase.assertEquals;

/**
 * Example local unit test, which will execute on the development machine (host).
 *
 * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
 */


public class ExampleUnitTest {

    @Test


    public void addition_isCorrect() throws Exception {
        assertEquals(4, 2 + 2);
        assertEquals(5,1+9);


    }
}

image.png

上面可以看出assertEquals中Expected和Actual不相等,如果现实结果和期待结果不相等,抛出断言异常并显示内容,这样抛出错误,更能快速读懂错误的原因和错误的具体业务逻辑

(1) assertTrue:判断是否为True。
(2) assertFalse:判断是否为false。
(3) assertSame:判断引用地址是否相同。
(4) assertNotSame:判断引用地址是否不相同。
(5) assertNull:判断是否为null。
(6) assertNotNull:判断是否不为null。
(7) assertEquals:判断是否相等,Object类型的对象需要实现haseCode及equals方法。
(8) assertNotEquals:判断是否不相等。
(9) assertEqualsNoOrder:判断忽略顺序是否相等

  • SoftAssert(软断言)

SoftAssert的特点
1) 如果一个断言失败,会继续执行这个断言下的其他语句或者断言
2) 也就是一个用例有多个断言,失败了其中一个,不影响其他断言的运行
3) 不要忘记调用assertAll()在该用例的最后一个断言后面
4) 软断言的类,叫SoftAssert.java,这个类是需要创建实例对象,才能调用相关实例方法进行软断言

package testng;  
  
import org.testng.annotations.Test;  
import org.testng.asserts.SoftAssert;  
  
public class AssertTestDemo {  
  
    @Test  
    public void testSoftAssert(){  
        System.out.println("Test start");  
        SoftAssert assertion = new SoftAssert();  
        assertion.assertEquals(12, 13,"两者不相等");  
        System.out.println("Test complete");  
        System.out.println(3+8);  
        assertion.assertAll();  
    }  
}  

运行结果:


image.png

通过运行结果截图,可以看到在断言12和13相等的这行代码后面还有其他的语句,如果这里采用的是硬断言,那么Test complete 和 11是不会输出,也就是代码没有被执行。这个就是SoftAssert的优点,再强调一次,最后一定要调用assertAll()方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 感谢原作者的奉献,原作者博客地址:http://blog.csdn.net/zhu_ai_xin_520/arti...
    狼孩阅读 14,114评论 1 35
  • 功能测试的流程: 分析需求 → 排测试计划 → 设计测试用例 → 执行测试用例 TestNG说明 TestNG 最...
    纳凉的偶尔阅读 292评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,904评论 18 139
  • 一,什么是单元测试? 单元测试是开发人员编写的,验证目标代码正确性的代码 当编写一个复杂逻辑的方法时,验证方法的准...
    爱你雨落阅读 985评论 0 1
  • 之前有说过要设计一个工作流调度器。开发一个完善的工作流调度器应该并不是一件简单的事情。但是通过Spark Stre...
    祝威廉阅读 4,581评论 0 7