软件测试技术实战 设计、工具及管理》联载--33

简介: 软件测试技术实战 设计、工具及管理》联载--33

8.1.5  介绍一下断言


我们可以看出,断言在Junit测试中的重要性,Junit最后是通过断言来决定测试用例通过与否。下面我们来看看常见的断言。


1assertEquals([Stringmessage],expected,actual)

message:可选,假如提供,将会在发生错误时报告这个消息[J1]

expected:是期望值,通常都是用户指定的内容。

actual:是被测试的代码返回的实际值。

例:assertEquals("equals","1","1");


2assertEquals([Stringmessage],expected,actual,tolerance)

message:是个可选的消息,假如提供,将会在发生错误时报告这个消息。

expected:是期望值,通常都是用户指定的内容。

actua:是被测试的代码返回的实际值。

toleranc:是误差参数,参加比较的两个浮点数在这个误差之内则会被认为是相等的。


例:assertEquals ("yes",6.6,13.0/2.0,0.5);


3assertTrue ([String message],Boolean condition)

message:是个可选的消息,假如提供,将会在发生错误时报告这个消息。

condition:是待验证的布尔型值。

该断言用来验证给定的布尔型值是否为真,假如结果为假,则验证失败。

例:assertTrue("true",0==0);


4assertFalse([String message],Boolean condition)

message:是个可选的消息,假如提供,将会在发生错误时报告这个消息。

condition:是待验证的布尔型值。

该断言用来验证给定的布尔型值是否为假,假如结果为真,则验证失败。

例:assertFalse("false",4==5);


5assertNull([String message],Object object)

message:是个可选的消息,假如提供,将会在发生错误时报告这个消息。

object:是待验证的对象。

该断言用来验证给定的对象是否为null,假如不为null,则验证失败。

例:assertNull("null",null);


6assertNotNull([String message],Object object)

message:是个可选的消息,假如提供,将会在发生错误时报告这个消息。

object:是待验证的对象。

该断言用来验证给定的对象是否为null,假如不为null,则验证失败。

该断言用来验证给定的对象是否为非null,假如为null,则验证失败。

例:assertNotNull("not null",new String());


7assertSame ([String message], expected,actual)

message:是个可选的消息,假如提供,将会在发生错误时报告这个消息。

expected:是期望值。

actual:是被测试的代码返回的实际值。

该断言用来验证expected参数和actual参数所引用的是否是同一个对象,假如不是,则验证失败。

例:assertSame("same",6,3+3);


8assertNotSame ([String message], expected,actual)

message:是个可选的消息,假如提供,将会在发生错误时报告这个消息。

expected:是期望值。

actual:是被测试的代码返回的实际值。

该断言用来验证expected参数和actual参数所引用的是否是不同对象,假如所引用的对象相同,则验证失败。

例:assertNotSame("not same",5,4+2);


9fail

fail([Stringmessage])

message是个可选的消息,假如提供,将会在发生错误时报告这个消息。

该断言会使测试立即失败,通常用在测试不能达到的分支上(如异常)。


8.1.6  案例分析


案例8-3:路径覆盖测试。

最后以本书中:“路径覆盖测试”提到的产品代码的例子为例,结束本章的介绍。

代码流程如图8-7所示。


8-7 单元测试流程图

函数返回参数j+k,产品代码如下:

package com.jerry;
public class TestDemo {
    int k=0;
    int j=0;
    public void clear() {     // 将结果清零
        k=0;
        j=0;
   }
    public int myTest(int x,int y,int z){
        if ((x>3)&&(z<10)){
            k=x*y-1;
            j=k*k;
        }
        if((x==4)||(y>5)){
            j=x*j+10;
        }
        j = j%3;
        return j+k;
    }
}

根据测试用例:

 

测试用例

k+j

路径

x=4y=6z=9

25

L4

x=4y=5z=10

1

L1

x=5y=4z=9

20

L2

x=4y=5z=10

1

L3

 

用参数化的形式实现,代码如下:

packagecom.jerry;
import  static org.junit.Assert.assertEquals;
import  org.junit.Test;
import  org.junit.runner.RunWith;
import  org.junit.runners.Parameterized;
import  org.junit.runners.Parameterized.Parameters;
import  java.util.Arrays;
import  java.util.Collection;
import  org.junit.Before; 
@RunWith(Parameterized.class)
publicclass TestDemoTest {
    private static TestDemoTestDemo = new TestDemo (); //声明被测对象类
    private int param1;   //定义成员变量
    private int param2;   //定义成员变量
    private int param3;   //定义成员变量
    private int result;   //定义成员变量
    @Parameters   //设置参数
    public static Collection<Object[]> data(){
         return Arrays.asList(new Object[][] {
               {4,6,9,25},
                {4,5,10,1},
                {5,4,9,20},
                {4,5,10,1},
       } );
   }
    // 构造函数,对变量进行初始化
    public TestDemoTest(int param1,intparam2,int param3,int result)  {
        this.param1=param1;
        this.param2=param2;
        this.param3=param3;
        this.result =result;
   }
    @Before  //初始化
    public void setUp() throws Exception {
      TestDemo.clear();
    }
    @Test   //运行测试
    public void TestMyTest()  {
      int result1=TestDemo.myTest(param1,param2,param3);//调用函数,执行测试
      assertEquals(result,result1);  //判断
          }
      }


8.2  本章总结


8.2.1  介绍内容

l JUnit 4环境的配置。

l JUnit 4测试用例的运行和调试。

l 对代码的详细介绍。

l JUnit 4的高级操作。

l 基于路径覆盖的案例分析。


8.2.2  案例

案例

所在章节

案例8-1:简易的计算器

8.1.1 Junit4环境的配置

案例8-2:计算一个数的平方

8.1.4-4参数化测试

案例8-3:路径覆盖测试

8.1.6案例分析


顾翔凡言:

不是好的工作会给你带来好的心情,而是好的心情会给你带来好的工作。

目录
相关文章
|
18天前
|
测试技术 C语言
网站压力测试工具Siege图文详解
网站压力测试工具Siege图文详解
26 0
|
1月前
|
测试技术
现代软件测试中的自动化工具与挑战
传统软件测试面临着越来越复杂的系统架构和不断增长的测试需求,自动化测试工具应运而生。本文将探讨现代软件测试中自动化工具的应用和挑战,深入分析其优势与局限性,为软件测试领域的发展提供思路和启示。
|
1月前
|
安全 测试技术
现代软件测试中的自动化技术应用及挑战
在当今数字化时代,软件测试的重要性日益凸显。本文探讨了现代软件测试中自动化技术的应用现状和挑战,分析了自动化测试在提高效率、降低成本、增强可靠性等方面的优势,同时也提出了自动化测试所面临的挑战和解决方案。
|
1月前
|
jenkins 测试技术 持续交付
现代软件测试中的自动化工具与挑战
随着软件开发领域的不断发展,自动化测试工具在测试过程中扮演着越来越重要的角色。本文将探讨现代软件测试中自动化工具的应用及面临的挑战,旨在帮助开发人员和测试人员更好地理解和应对自动化测试中的问题。
|
18天前
|
测试技术 Linux Apache
网站压力测试工具webbench图文详解
网站压力测试工具webbench图文详解
12 0
|
21天前
|
安全 测试技术
深入理解白盒测试:方法、工具与实践
【4月更文挑战第7天】 在软件开发的质量控制过程中,白盒测试是确保代码逻辑正确性的关键步骤。不同于黑盒测试关注于功能和系统的外部行为,白盒测试深入到程序内部,检验程序结构和内部逻辑的正确性。本文将探讨白盒测试的核心技术,包括控制流测试、数据流测试以及静态分析等方法,同时介绍当前流行的白盒测试工具,并讨论如何在实际项目中有效实施白盒测试。文章的目标是为软件测试工程师提供一份综合性指南,帮助他们更好地理解和应用白盒测试技术。
|
27天前
|
Java 测试技术 API
软件测试中的自动化工具与策略
软件测试是确保软件质量的重要环节,而自动化测试工具和策略的应用在提高测试效率和准确性方面发挥着重要作用。本文将介绍几种常见的自动化测试工具,并探讨在软件测试中应用自动化测试的最佳实践和策略。
|
29天前
|
Web App开发 Java 测试技术
深入理解与应用软件自动化测试工具Selenium
随着软件开发的快速发展,软件测试在保证产品质量方面发挥着越来越重要的作用。其中,自动化测试以其效率高、成本低的特点受到了广大开发者的欢迎。本文主要介绍了自动化测试工具Selenium的基本概念、原理以及在实际开发中的应用,旨在帮助读者更好地理解和使用Selenium进行高效的自动化测试。
22 4
|
1月前
|
人工智能 测试技术 虚拟化
现代软件测试中的自动化工具与技术
随着信息技术的迅猛发展,现代软件开发和测试领域也在不断创新。本文将探讨现代软件测试中自动化工具与技术的应用。通过分析自动化测试的优势、挑战以及最佳实践,帮助读者更好地理解当前软件测试领域的发展趋势,并为实际工作提供参考。
20 1
|
1月前
|
Web App开发 前端开发 JavaScript
Python Selenium是一个强大的自动化测试工具
Python Selenium是一个强大的自动化测试工具

热门文章

最新文章