【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"));
}

写的比较啰嗦,见谅

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • mysql 类型长度_数据库decimal类型长度

    mysql 类型长度_数据库decimal类型长度1个字节=8位tinyint为一个字节2的8次方=256所以最多存储到256日期和时间数据类型MySQL数据类型含义date3字节,日期,格式:2014-09-18time3字节,时间,格式:08:42:30datetime8字节,日期时间,格式:2014-09-1808:42:30timestamp4字节,自动存储记录修改的时间year1字节,年份数值数据类型整型MySQL数据…

  • Installous4 PC Client「建议收藏」

    Installous4 PC Client「建议收藏」Installous4PCClient下载程序请点这里写了一个IPhone上Installous4的PC端可以在电脑上搜索App以后再不用在手机上挂WIFI着下载了…哈哈哈相信越狱的同学

  • SpringMVC工作原理(含案例图解)

    SpringMVC工作原理(含案例图解)SpimgMVC工作原理第1步:浏览器发送指定的请求都会交给DispatcherServlet,他会委托其他模块进行真正的业务和数据处理第2步:DispatcherServlet会查找到HandleMapping,根据浏览器的请求找到对应的Controller,并将请求交给目标Controller第3步:目标Controller处理完业务后,返回一个ModelAndView给Dispa…

  • 数据结构:图(Graph)【详解】

    数据结构:图(Graph)【详解】图【知识框架】【考纲内容】图的基本概念图的存储及基本操作邻接矩阵法;邻接表法;邻接多重表;十字链表图的遍历深度优先搜索;广度优先搜索图的基本应用最小(代价)生成树;最短路径;拓扑排序;关键路径图的基本概念在线性表中,数据元素之间是被串起来的,仅有线性关系,每个数据元素只有一个直接前驱和一个直接后继。在树形结构中,数据元素之间有着明显的层次关系,并且每一层上的数据元素可能和下一层中多个元素相关,但只能和上一层中一个元素相关。图是一种较线性表和树更加复杂的数据结构。

  • 1553B总线控制器61580使用

    1553B总线控制器61580使用这里写自定义目录标题收藏一篇关于61580使用的文章,侵删!原文地址:http://emesjx.spaces.eepw.com.cn/articles/article/item/1000231、BU-61580有“缓冲”和“透明”2种存储模式,前者使用BU-61580内部4Kx16bit缓冲区,后者使用外部RAM作为数据缓冲区,最大可达64Kx16bit。2、BU-61580的缓冲模式又…

  • 我为什么放弃Go语言

    我为什么放弃Go语言我为什么放弃Go语言?有好几次,当我想起来的时候,总是会问自己:这个决定是正确的吗?是明智和理性的吗?其实我一直在认真思考这个问题。开门见山地说,我当初放弃Go语言,就是因为两个“不爽”:第一,对Go语言本身不爽;第二,对Go语言社区里的某些人不爽。毫无疑问,这是非常主观的结论,但是我有足够详实的客观的论据。

发表回复

您的电子邮箱地址不会被公开。

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