[ST2017] Lab1: Triangle type and Junit test

Lab1 3014218071 王汉超

Request:

  Write a program with a function(getTriangleStatus) and test it, which takes three double number l1, l2, l3 as lengths of triangle sides and calculates whether the triangle is equilateral, isosceles, or scalene.

Contents:

一. 导入相应包

1.导入 JUnit, Hamcrest

右键项目名 -> 选择 属性Properties -> 选择 Libraries -> 选择 JUnit4 -> Finish

 

2. 导入

Help -> Install new software -> Add -> Local -> 选择本地文件Eclemma路径 -> 安装, 安装后重启.

二、实验内容

1.Description

    判断三角形类型的程序:

    Input 三条边的长度(double): l1, l2, l3

    Output 构成三角形类型(int): 1 -- 错误(边长不是正实数); 0 -- 不构成三角形, 1 -- 非等腰(scalene)三角形, 2 -- 等腰不等边(isosceles)三角形, 3 -- 等边(equilateral)三角形

2.Codes:

gitHub: https://github.com/E-C-Ares/ST2017_Lab1

Main.java:

package isTriangle;import java.util.Scanner;public class Main {public static int getTriangleStatus(double l1, double l2, double l3){int s = -1;double temp = 0;//l1 > l2 > l3if (l2 > l1){temp = l2;l2 = l1;l1 = temp;}if (l3 > l1){temp = l3;l3 = l1;l1 = temp;}if (l3 > l2){temp = l3;l3 = l2;l2 = temp;}if(l3 > 0){if(l1 >= l2 + l3){s = 0;}else if(l1 < l2 + l3){s = 1;if(l1 == l2 || l2 == l3){s ++;if(l1 == l3){s ++;}}}}return s;}@SuppressWarnings("resource")public static void main(String[] args){Scanner edges = new Scanner(System.in);System.out.println("输入三条边的长度:"); double l1 = edges.nextDouble();      double l2 = edges.nextDouble();double l3 = edges.nextDouble();int s = getTriangleStatus(l1, l2, l3);switch (s){case -1:System.out.println("输入不符合要求"); break;case 0:System.out.println("不构成三角形");break;case 1:System.out.println("一般三角形");break;case 2:System.out.println("仅等腰三角形");break;case 3:System.out.println("等边三角形");break;}main(args);}
}

3.JUnit Test & Eclemma Cover:

    为了避免污染源代码, 测试代码和源代码放置于不同的文件夹中:

    右键项目 -> New -> JUnit Test Case -> 选择被测试函数: 截图如下:

MainTest.java:

package isTriangle;import static org.junit.Assert.*;import org.junit.Test;public class MainTest {Main t= new Main();//getTriangleStatus getStatus = new getTriangleStatus();
    @Testpublic void test1() {assertEquals("Should be an equilateral triangle", 3, t.getTriangleStatus(1.0, 1.0, 1.0));}@Testpublic void test2() {assertEquals("Should be an ERROR!", -1, t.getTriangleStatus(0, 0, 0));}@Testpublic void test3() {assertEquals("Should be an ERROR!", -1, t.getTriangleStatus(0, 1, 1));}@Testpublic void test4() {assertEquals("Should be an ERROR!", -1, t.getTriangleStatus(-0.01, 9.0, 9.0));}@Testpublic void test5() {assertEquals("Should be an isosceles triangle", 2, t.getTriangleStatus(2, 2, 3));}@Testpublic void test6() {assertEquals("Should be an isosceles triangle", 0, t.getTriangleStatus(1, 1, 2));}@Testpublic void test7() {assertEquals("Should be a scalene triangle", 1, t.getTriangleStatus(10.0000, 10.0001, 10.0002));}@Testpublic void test8() {assertEquals("Should be a scalene triangle", 1, t.getTriangleStatus(10.0000, 10.0001, 10.0002));}@Testpublic void test9() {assertEquals("Should be a scalene triangle", 1, t.getTriangleStatus(10.0000, 10.0001, 10.0002));}@Testpublic void test10() {assertEquals("Should be a scalene triangle", 1, t.getTriangleStatus(10.0000, 10.0001, 10.0002));}@Testpublic void test11() {assertEquals("Should be a scalene triangle", 1, t.getTriangleStatus(10.0, 9.0, 8.0));}    
}

Run -> Coverage last launched

三. 实验结果

Junit 测试用例 与 Eclemma 覆盖检测:

四. 总结

学会了安装jar包, 使用 JUnit 和 Eclemma 进行测试, 习得在测试的过程中应该考虑到尽可能多的情况, 以满足程序的完备性.

转载于:https://www.cnblogs.com/cragoncanth/p/6537272.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

说说图片加载不出来_晒晒我的新家,朋友都说好看,恨不得天天宅在卧室不出来...

我和老婆是高中同学&#xff0c;早年因为没有考上大学&#xff0c;我早早的来北京闯事业&#xff0c;也吃了很多苦&#xff0c;好在那时机会很多&#xff0c;做什么都能赚点钱&#xff0c;生活质量也逐渐好了起来&#xff0c;配得上我老婆这样的大学生&#xff0c;今年和老婆结…

mysql中基本的DML语句

1.DML语句的含义 数据操纵语言&#xff08;DML&#xff09; 由 DBMS 提供&#xff0c;用于让用户或程序员使用&#xff0c;实现对数据库中数据的操作。基本的 DML 分为两类四种&#xff1a;检索&#xff08;查询&#xff09;和更新&#xff08;插入、删除、修改&#xff09;。…

委托窗体传值

转载于:https://www.cnblogs.com/yoyo-524/p/6538547.html

yy自动语音接待机器人_人脸签到、发言记录,会议机器人来啦

会议机器人来啦~~在各种关于会议的吐槽中&#xff0c;很多人产生了一个需求&#xff1a;会议机器人。对于这一需求&#xff0c;安泽智能基于自身在人工智能行业的经验&#xff0c;研发出了适用于会议场景&#xff0c;具有会场引导、人脸识别签到、会议记录、与主持人串讲互动等…

TimeUnit

TimeUnit TimeUnit.DAYS 表示天 TimeUnit.SECONDS表示 秒

mysql中的函数有哪些?(1.数字函数)

一.函数类型 1.数学函数和控制流函数 2.字符串函数 3.日期和时间函数 4.系统信息函数和加密函数 二.解析数学函数及其包含的类型 1.数学函数是用来处理数值数据方面的运算&#xff0c;MySQL 中主要的数学函数有绝对值函数、三角函数、对数函数和随机函数等。 使用数学函数…

好分数阅卷3.0_自考通过率低?一位资深阅卷老师的自述

很多同学在咨询的时候&#xff0c;都会问老师自考的通过率高吗&#xff1f;老师会故意压分吗&#xff1f;自考分数背后究竟经历了怎么样的故事&#xff0c;今天我们一起来听一听自考阅卷老师的自述。1印象分很重要正常情况下&#xff0c;一份卷子的阅卷时间一般不会超过1.5分钟…

【BZOJ2300】【SCOI2011】糖果

差点就忘了还有差分约束这个东西……看见了就要学习一个 原题&#xff1a; 幼儿园里有N个小朋友&#xff0c;lxhgww老师现在想要给这些小朋友们分配糖果&#xff0c;要求每个小朋友都要分到糖果。但是小朋友们也有嫉妒心&#xff0c;总是会提出一些要求&#xff0c;比如小明不希…

mysql中的函数有哪些?(2.控制流函数)

一.函数类型 1.数学函数和控制流函数 2.字符串函数 3.日期和时间函数 4.系统信息函数和加密函数 二.解析控制流函数及其包含类型 1.控制流函数也称作“条件判断函数”&#xff0c;其根据满足的条件不同&#xff0c;执行相应的流程。 MySQL 中常见的控制流函数有 IF、IFNU…

MySQL全文索引应用简明教程

本文从以下几个方面介绍下MySQL全文索引的基础知识&#xff1a; MySQL全文索引的几个注意事项全文索引的语法几种搜索类型的简介几种搜索类型的实例全文索引的几个注意事项 搜索必须在类型为fulltext的索引列上&#xff0c;match中指定的列必须在fulltext中指定过仅能应用在表引…

st庞大股票股吧_黄金变石头!6倍大牛股提前锁定退市,市值蒸发98%,还有这些股票拉响警报(附名单)...

12月18日&#xff0c;*ST刚泰再次以跌停收盘&#xff0c;报0.53元/股&#xff0c;总市值仅7.89亿元。截至今日&#xff0c;公司已连续8日跌停&#xff0c;同时连续第19天收盘价低于1元/股&#xff0c;面值退市已是板上钉钉。戏剧性的是&#xff0c;与*ST刚泰行业、境遇相似的*S…

MYSQL的函数有哪些?(3.字符串函数)

一。字符串函数的类别及其作用 字符串函数主要用来处理字符串数据&#xff0c;MySQL 字符串函数主要有计算字符长度函数、字符串合并函数、字符串转换函数、字符串比较函数以及查找指定字符串位置函数等。 如下表所类 字符串函数 功能介绍 CHAR_LENGTH(str) 返回字符串 s…

多线程卖票问题

public class Ticket {private int number 30;public void sale(){if(number > 0){System.out.println(Thread.currentThread().getName() "卖出了" (number--) "票&#xff0c;剩余&#xff1a;" number);}}public static void main(String[] args…

windows server 2003R2\2008R2\2012\2016 安装【故障转移群集】cluster

温故而知新&#xff01; 靠&#xff0c;突然觉得it技能只要一年的时间就能忘记&#xff01; virtualbox虚拟机安装群集&#xff0c;注意点&#xff1a; clone的虚拟机&#xff0c;sid问题。sysprep太慢了&#xff0c;不如重新安装快&#xff01;虚拟机增强组件&#xff0c;会影…

oracle数据库主键自增序列_oracle数据库ID自增长--序列

什么是序列&#xff1f;在mysql中有一个主键自动增长的id&#xff0c;例如&#xff1a;uid number primary key auto_increment;在oracle中序列就是类似于主键自动增长&#xff0c;两者功能是一样的&#xff0c;只是叫法不同而已。在oracle中想要实现id自动增长只能用序列来实现…

MYSQL的函数有哪些?(4.1时间与日期函数)

一。首先介绍一下时间及日期函数 日期和时间函数主要用来处理日期和时间的值&#xff0c;一般的日期函数除了使用 DATE 类型的参数外&#xff0c;也可以使用DATETIME 或 TIMESTAMP 类型的参数&#xff0c;只是忽略了这些类型值的时间部分。类似的情况还有以 TIME 类型为参数的…

在配置静态IP的时候遇到 :bringing up interface eth0 : error unknown connection

首先这是动态ip配置成功的结果 接下来切换到root用户来配置静态的 按照静态ip的配置方法配置好文件后&#xff08;具体过程这里就不多加说明&#xff09; 然后保存退出 当我们重启网卡的时候问题来了&#xff08;因为本人有点强迫症&#xff0c;多次重启了&#xff0c;结果还是…