通过这两天学习了解了用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——开发者测试例题相关推荐

  1. 开发者测试:可测试性是设计出来的

    谈开发者测试,为什么又要谈设计呢?这是一个有意思的问题.在切入这个主题之前,先看一个"完美架构图"的问题. 01 架构是完美的,实现是骨感的 我相信你肯定看过无数多个类似这样的架构 ...

  2. 开发者测试你必须知道的7件事

    摘要:开发者测试是现代软件工程中非常重要的一环,敏捷开发.主干开发这些先进的项目管理方法和流程都基于完善的开发者测试. 一."开发者测试" 就是"开发者来测试" ...

  3. 鸿蒙开发者测评,看了下鸿蒙开发者测试版本

    [其他] 看了下鸿蒙开发者测试版本 12239 电梯直达 阿尔萨斯大孝子 自成一派 发表于 2021-4-21 20:41:03 来自:HUAWEI Mate 40 Pro 最新回复 2021-4-2 ...

  4. 开发者测试android studio 试手

    本篇文章个人在北京喝咖啡的时候突然想到的...今天就有想写几篇关于开发者测试的文章,所以回家到之后就奋笔疾书的写出来宣布了 Google I/O 2013大会在北京时间2013年5月16日凌晨0点拉开 ...

  5. 全国大学生软件测试开发者测试大赛笔记总结

    全国大学生软件测试开发者测试大赛笔记总结 (1)常用头文件 import static org.junit.Assert.assertEquals; import java.lang.reflect. ...

  6. java bdd 框架_开发者测试: 实现BDD测试框架(JSpec)

    There are two ways of constructing a software design. One way is to make it so simple that there are ...

  7. 鸿蒙开发者测试版客户端下载,看了下鸿蒙开发者测试版本

    [其他] 看了下鸿蒙开发者测试版本 12319 电梯直达 阿尔萨斯大孝子 自成一派 发表于 2021-4-21 20:41:03 来自:HUAWEI Mate 40 Pro 最新回复 2021-4-2 ...

  8. Java实现微信开发者-测试账号申请及配置

    最近在搞微信的开发者模式,对于第一次接触这东西的人来说还真是没有头绪,因为需要跟微信进行交互,难免会碰到一些问题,不像我们在本机开发那样,很快就能把逻辑代码写完.今天主要是让测试耽误了时间,由于微信只 ...

  9. 登录慕测平台从慕测开发者测试练习的Triangle和NextDay程序中分别生成满足100%语句覆盖、函数覆盖

    生成JUnit测试用例集 1.对Triangle进行JUnit测试并设计测试用例使其满足100%函数覆盖 2.对Triangle进行JUnit测试并设计测试用例使其满足100%语句覆盖 3.对Tria ...

最新文章

  1. 细节决定成败(竞赛错题经验总结)
  2. putty 保存密码 自动登陆 四种方法
  3. 2020-10-11 LMI线性矩阵不等式的一些知识
  4. 【转载】一文彻底拿下Java异常
  5. jakarta ee_Jakarta EE 8状态
  6. 保存blob为本地文件
  7. AYOJ N皇后问题
  8. 今年7月,一起来看谷歌如何测试移动应用!
  9. windows7怎么安装python库_windows7 下安装Python的PIL库
  10. web 报表中电子图章 / 水印的轻松实现
  11. 梳理需求-需求调研报告
  12. JavaScript获取当前url路径
  13. 一周技术学习笔记(第58期)-如何突破第四章障碍
  14. 华为6个月试用期经历
  15. 2022年春招美团二面总结 凉经
  16. 【ES6】let、const变量提升的验证,以及TDZ死区的理解
  17. //利用 DirectoryInfo递归遍历文件夹,删除所有文件,文件夹
  18. 硬件防火墙和软件防火墙有什么区别
  19. loopback地址是什么?怎么配置
  20. 召唤出DirectX诊断工具

热门文章

  1. 《寻梦环游记》教你打造独特的职场标签
  2. 2022年全球市场特种淀粉总体规模、主要生产商、主要地区、产品和应用细分研究报告
  3. 和利时LE5107_LE5106_自由口协议
  4. sql中rtrim的用法
  5. Nodejs学习之路
  6. 如何将一个软件程序设置为开机启动项(win10系统)
  7. ipad有必要用手写笔吗?电容笔和Apple pencil区别
  8. 关于开源的GIS现状分析
  9. 流集数据收集器最新消息
  10. Win10怎么设置安装软件需要输入管理员账号密码