【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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 背景图片的精灵图的使用

    背景图片的精灵图的使用&lt;!DOCTYPEhtml&gt;&lt;html&gt;&lt;head&gt;&lt;metacharset="utf-8"/&gt;&lt;metahttp-equiv="X-UA-Compatible"content="IE=edge"&gt;&lt;title&gt;背景图片的精灵图的使用&lt;

    2022年6月9日
    31
  • java activiti 工作流引擎_Activiti工作流引擎简介详解

    java activiti 工作流引擎_Activiti工作流引擎简介详解Activiti工作流引擎简介一、概述Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理,工作流,服务协作等领域的一个开源,灵活的,易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM平台,创始人TomBaeyens是JBossJBPM的项目架构师,它的特色是提供了eclipse插件,开发人员可以通过插…

    2022年7月27日
    18
  • Java设计模式之创建型:单例模式

    Java设计模式之创建型:单例模式

    2021年10月4日
    48
  • 微信小程序如何实现支付功能?看官方文档头疼(使用云函数的方式操作)「建议收藏」

    先来个效果图^_^微信支付功能,个人公众号是没有办法进行开发支付功能的,需要是使用非个人公众号进行注册(如:营业执照等,可以去淘宝购买一个也行大概500左右)公众平台的配置可以参考文档,这里主要是微信官网注册非个体公众号的否需代码操作。(也就是和我们码农相关的操作了)耐心看下面操作,基本上就是复制下面的代码(整个操作也就一会,基础再差也就30分钟搞定支付)^_^1.创建微信小程序2.在微信小程中序创建云函数1).根目录下创建一…

    2022年4月18日
    323
  • 每天一道算法_7_Biorhythms

    DescriptionSome people believe that there are three cycles in a person’s life that start the day he or she is born. These three cycles are the physical, emotional, and intellectual cycles, and they

    2022年3月10日
    39
  • 百科知识 .e,.ec文件如何打开

    百科知识 .e,.ec文件如何打开1.e是易语言源文件,你可以从以下网址下载e语言编程环境: http://www.xiazaiba.com/html/409.html  2安装之后会自动关联.e文件。  3打开一个e语言文件之后会要求打开相应的易模块文件,既".ec"文件  4下面这个程序点击运行之后打开了一个自定义的透明窗口。  5在纯黑背景下可以看到…

    2022年7月20日
    15

发表回复

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

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