TriangleTest——开发者测试例题
通过这两天学习了解了用Junit测试Java项目的方法,并练习了一个例子,现在写篇blog总结一下,这道题在慕测官网难度为易,主要考察代码覆盖。
项目代码:
package net.mooctest;
public class Triangle {protected long lborderA = 0;protected long lborderB = 0;protected long lborderC = 0;// Constructorpublic Triangle(long lborderA, long lborderB, long lborderC) {this.lborderA = lborderA;this.lborderB = lborderB;this.lborderC = lborderC;}/*** check if it is a triangle* * @return true for triangle and false not*/public boolean isTriangle(Triangle triangle) {boolean isTriangle = false;// check boundaryif ((triangle.lborderA > 0 && triangle.lborderA <= Long.MAX_VALUE)&& (triangle.lborderB > 0 && triangle.lborderB <= Long.MAX_VALUE)&& (triangle.lborderC > 0 && triangle.lborderC <= Long.MAX_VALUE)) {// check if subtraction of two border larger than the thirdif (diffOfBorders(triangle.lborderA, triangle.lborderB) < triangle.lborderC&& diffOfBorders(triangle.lborderB, triangle.lborderC) < triangle.lborderA&& diffOfBorders(triangle.lborderC, triangle.lborderA) < triangle.lborderB) {isTriangle = true;}}return isTriangle;}/*** Check the type of triangle* * Consists of "Illegal", "Regular", "Scalene", "Isosceles"*/public String getType(Triangle triangle) {String strType = "Illegal";if (isTriangle(triangle)) {// Is Regularif (triangle.lborderA == triangle.lborderB&& triangle.lborderB == triangle.lborderC) {strType = "Regular";}// If scaleneelse if ((triangle.lborderA != triangle.lborderB)&& (triangle.lborderB != triangle.lborderC)&& (triangle.lborderA != triangle.lborderC)) {strType = "Scalene";}// if isosceleselse {strType = "Isosceles";}}return strType;}/*** calculate the diff between borders* * */public long diffOfBorders(long a, long b) {return (a > b) ? (a - b) : (b - a);}/*** get length of borders*/public long[] getBorders() {long[] borders = new long[3];borders[0] = this.lborderA;borders[1] = this.lborderB;borders[2] = this.lborderC;return borders;}
}
测试代码:
package net.mooctest;
import static org.junit.Assert.*;import org.junit.Test;public class TriangleTest {Triangle T1 = new Triangle(2,3,4);Triangle T4 = new Triangle(0,1,2);Triangle T7 = new Triangle(Long.MAX_VALUE,2,4);Triangle T10 = new Triangle(3,3,3);Triangle T11= new Triangle(3,4,4);long []borders= {0,0,0}; @Testpublic void testTriangle() {assertEquals(true, T1.isTriangle(T1));assertEquals(false,T4.isTriangle(T4));assertFalse(T7.isTriangle(T7));assertTrue(T10.isTriangle(T10));assertTrue(T11.isTriangle(T11));}@Testpublic void testGetType() {assertTrue("Illegal"==T4.getType(T4)); assertTrue("Regular"==T10.getType(T10));assertTrue("Isosceles"==T11.getType(T11));assertTrue("Scalene"==T1.getType(T1));}@Testpublic void testDiffOfBorders() {assertTrue(1==T1.diffOfBorders(T1.lborderA, T1.lborderB));}@Testpublic void testGetBorders() {borders=T1.getBorders();assertTrue(T1.lborderA==borders[0]);assertEquals(T1.lborderB,borders[1]);assertEquals(T1.lborderC,borders[2]);}}
测试提交结果:
对于等价类,只需要一个测试用例即可覆盖;因为测试题目主要考察代码行的覆盖,所以将待测试方法全部进行测试即可。
对于测试中用到的断言语句:
assertTrue([message,] boolean condition) 验证boolean条件为true。
assertFalse([message,] boolean condition) 验证boolean条件为false。
assertEquals([message,] expected, actual) 验证expected和actual相同。
另外,了解了一些使用Junit进行单元测试的tips:
- 1.测试方法上必须使用@Test进行修饰
- 2.测试方法必须使用public void进行修饰,不能带任何的参数
- 3.新建一个源代码目录来存放测试代码
- 4.测试类的包应该和被测试类保持一致
- 5.测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖
TriangleTest——开发者测试例题相关推荐
- 开发者测试:可测试性是设计出来的
谈开发者测试,为什么又要谈设计呢?这是一个有意思的问题.在切入这个主题之前,先看一个"完美架构图"的问题. 01 架构是完美的,实现是骨感的 我相信你肯定看过无数多个类似这样的架构 ...
- 开发者测试你必须知道的7件事
摘要:开发者测试是现代软件工程中非常重要的一环,敏捷开发.主干开发这些先进的项目管理方法和流程都基于完善的开发者测试. 一."开发者测试" 就是"开发者来测试" ...
- 鸿蒙开发者测评,看了下鸿蒙开发者测试版本
[其他] 看了下鸿蒙开发者测试版本 12239 电梯直达 阿尔萨斯大孝子 自成一派 发表于 2021-4-21 20:41:03 来自:HUAWEI Mate 40 Pro 最新回复 2021-4-2 ...
- 开发者测试android studio 试手
本篇文章个人在北京喝咖啡的时候突然想到的...今天就有想写几篇关于开发者测试的文章,所以回家到之后就奋笔疾书的写出来宣布了 Google I/O 2013大会在北京时间2013年5月16日凌晨0点拉开 ...
- 全国大学生软件测试开发者测试大赛笔记总结
全国大学生软件测试开发者测试大赛笔记总结 (1)常用头文件 import static org.junit.Assert.assertEquals; import java.lang.reflect. ...
- java bdd 框架_开发者测试: 实现BDD测试框架(JSpec)
There are two ways of constructing a software design. One way is to make it so simple that there are ...
- 鸿蒙开发者测试版客户端下载,看了下鸿蒙开发者测试版本
[其他] 看了下鸿蒙开发者测试版本 12319 电梯直达 阿尔萨斯大孝子 自成一派 发表于 2021-4-21 20:41:03 来自:HUAWEI Mate 40 Pro 最新回复 2021-4-2 ...
- Java实现微信开发者-测试账号申请及配置
最近在搞微信的开发者模式,对于第一次接触这东西的人来说还真是没有头绪,因为需要跟微信进行交互,难免会碰到一些问题,不像我们在本机开发那样,很快就能把逻辑代码写完.今天主要是让测试耽误了时间,由于微信只 ...
- 登录慕测平台从慕测开发者测试练习的Triangle和NextDay程序中分别生成满足100%语句覆盖、函数覆盖
生成JUnit测试用例集 1.对Triangle进行JUnit测试并设计测试用例使其满足100%函数覆盖 2.对Triangle进行JUnit测试并设计测试用例使其满足100%语句覆盖 3.对Tria ...
最新文章
- 细节决定成败(竞赛错题经验总结)
- putty 保存密码 自动登陆 四种方法
- 2020-10-11 LMI线性矩阵不等式的一些知识
- 【转载】一文彻底拿下Java异常
- jakarta ee_Jakarta EE 8状态
- 保存blob为本地文件
- AYOJ N皇后问题
- 今年7月,一起来看谷歌如何测试移动应用!
- windows7怎么安装python库_windows7 下安装Python的PIL库
- web 报表中电子图章 / 水印的轻松实现
- 梳理需求-需求调研报告
- JavaScript获取当前url路径
- 一周技术学习笔记(第58期)-如何突破第四章障碍
- 华为6个月试用期经历
- 2022年春招美团二面总结 凉经
- 【ES6】let、const变量提升的验证,以及TDZ死区的理解
- //利用 DirectoryInfo递归遍历文件夹,删除所有文件,文件夹
- 硬件防火墙和软件防火墙有什么区别
- loopback地址是什么?怎么配置
- 召唤出DirectX诊断工具