【SC随笔】Java测试mutator方法的注意点

【SC随笔】Java测试mutator方法的注意点对于mutator方法,仅仅测试返回值是否符合预期是不完备的,mutator改变了对象,就需要用observor方法观察是否发生了预期改变

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

HIT-SC-LAB2需要实现一个Graph接口和两个具体的类ConcreteVerticesGraph.java和ConcreteEdgesGraph.java
接口有抽象方法Set

 /** * Add, change, or remove a weighted directed edge in this graph. * If weight is nonzero, add an edge or update the weight of that edge; * vertices with the given labels are added to the graph if they do not * already exi * s zero, remove the edge if it exists (the graph is not * otherwise modified). * * @param source label of the source vertex * @param target label of the target vertex * @param weight nonnegative weight of the edge * @return the previous weight of the edge, or zero if there was no such * edge */
    public int set(L source, L target, int weight);

设置一条边(权重不能为负数),返回这条边原来的权重,如果原本不存在则返回零。
一开始写的测试用例不合格,只比较了返回值

    @Test
    public void testSet(){ 
   
        Graph<String> instance = emptyInstance();
        assertEquals("add a edge that doesn't exist before",
                0, instance.set("v1","v2",1));
        assertEquals("add a edge that doesn't exist before",
                0, instance.set("v1","v3",2));
        assertEquals("add a edge that doesn't exist before",
                0, instance.set("v2","v3",3));
        assertEquals("add a edge that does exist before",
                1, instance.set("v1","v2",5));
        assertEquals("remove a edge",
                5, instance.set("v1","v2",0));
        assertEquals("add a edge the source and target of it didn't exist",
                0, instance.set("v4","v5",1));
    }

然而对于mutator方法,仅仅测试返回值是否符合预期是不完备的,mutator改变了对象,就需要用observor方法观察是否发生了预期改变。
将测试用例更改如下:

 @Test
    public void testSet(){ 
   
        Graph<String> instance = emptyInstance();
        assertEquals("add a edge that doesn't exist before",
                0, instance.set("v1","v2",1));
        Map<String,Integer> expect = new HashMap<>();
        expect.put("v2",1);
        assertEquals(expect,instance.targets("v1"));
        assertEquals("add a edge that doesn't exist before",
                0, instance.set("v1","v3",2));
        expect.put("v3",2);
        assertEquals(expect,instance.targets("v1"));
        assertEquals("add a edge that doesn't exist before",
                0, instance.set("v2","v3",3));
        Map<String,Integer> expect2 = new HashMap<>();
        expect2.put("v1",2);
        expect2.put("v2",3);
        assertEquals(expect2,instance.sources("v3"));
        assertEquals("add a edge that does exist before",
                1, instance.set("v1","v2",5));
        expect.put("v2",5);
        assertEquals(expect,instance.targets("v1"));
        assertEquals("remove a edge",
                5, instance.set("v1","v2",0));
        expect.remove("v2");
        assertEquals(expect,instance.targets("v1"));
        assertEquals("add a edge the source and target of it didn't exist",
                0, instance.set("v4","v5",1));
        Map<String,Integer> expect3 = new HashMap<>();
        expect3.put("v5",1);
        assertEquals(expect3,instance.targets("v4"));
        Map<String,Integer> expect4 = new HashMap<>();
        expect4.put("v4",1);
        assertEquals(expect4,instance.sources("v5"));

    }

写的比较啰嗦,见谅

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194484.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • spring整合redis集群配置密码_redis默认密码

    spring整合redis集群配置密码_redis默认密码创作背景springboot2集成redis集群网上的例子已经很多了,但涉及到密码几乎都是明文,这在实际生产环境中,是不允许的,特写此文章。源码片段第一步:pom.xml<?xmlversion=”1.0″encoding=”UTF-8″?><projectxmlns=”http://maven.apache.org/POM/4.0.0″xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

    2025年9月19日
    5
  • 互联网海量视频数据的存储[通俗易懂]

    原文链接:http://www.docin.com/p-86312184.html?docfrom=rrela一、背景    互联网内容提供方式转变:用户创造内容。视频应用、网络游戏、搜索引擎等互联网衍生业务迅速发展,使得海量数据存储、管理和处理成为当今互联网公司面临的严峻问题。这些信息保存在存储设备上,便是高膨胀的海量数据,表1是不同互联网应用的规模。  互联网应用海量数据的共性:  1…

    2022年4月14日
    90
  • linux dstat,dstat 用法详解

    linux dstat,dstat 用法详解Windows 下有性能监视器 Linux 下当然也不示弱 亲还在用 vmstat iostat nfsstat netstat ifstat 来查看系统性能状态 那你就弱爆了 今天给亲一个神器 只需他一个你就可以得到以上这么多工具综合的功能 闲言表过 步入正题 dstat 如果系统没有些工具 yum yinstalldsta 安装下即妥 此软件小巧玲珑 软件包大小只有 144k 安装

    2025年9月13日
    4
  • onedrive个人版免费扩容_onedrive会员

    onedrive个人版免费扩容_onedrive会员这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。如果你想学习如何使用Mar

    2025年8月30日
    9
  • make menuconfig学习

    make menuconfig学习1.简介menuconfig是一套图像化配置工具,由ncurses库提供软件支持。ncurses库提供了一系列的函数以便使用者调用它们去生成基于文本的用户界面。menuconfig本身的软件只负责提供menuconfig工作的这一套逻辑,比如说通过上下左右调整光标,Enter选中等,并不负责提供内容。menuconfig运行之后会读取Kconfig、读取/写入.config文件,Kconfi…

    2022年5月20日
    85
  • 微服务架构设计_中台微服务架构设计模式

    微服务架构设计_中台微服务架构设计模式微服务软件架构是一个包含各种组织的系统组织,这些组件包括Web服务器,应用服务器,数据库,存储,通讯层),它们彼此或和环境存在关系。系统架构的目标是解决利益相关者的关注点。Conway’

    2022年8月6日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号