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

[ST2017] Lab1: Triangle type and Junit test相关推荐

  1. 使用ant进行junit测试

    (绿色部分为转) 一.关于Junit 关于为什么junit.jar包不能放到lib/ext目录中: 先谈谈类装载器 java虚拟机和程序都调用ClassLoader类的loadClass的方法来加载. ...

  2. leetcode @python 120. Triangle

    题目链接 https://leetcode.com/problems/triangle/ 题目原文 Given a triangle, find the minimum path sum from t ...

  3. Java基础学习笔记(二)_Java核心技术(进阶)

    本篇文章的学习资源来自Java学习视频教程:Java核心技术(进阶)_华东师范大学_中国大学MOOC(慕课) 本篇文章的学习笔记即是对Java核心技术课程的总结,也是对自己学习的总结 文章目录 Jav ...

  4. Hadoop1.1.2 Eclipse 插件编译

    可以直接下载我编译好的插件 hadoop-eclipse-plugin-1.1.2 http://download.csdn.net/detail/wind520/5784389 1:方法一: cop ...

  5. 如何与Java 8,NetBeans Platform 8,Jenkins,Jacoco和Sonar进行持续集成

    介绍 Java 8出现了,人们所期待的革命终于发布了,我敢肯定,你们中的许多人都在想着同样的问题"我应该在项目中使用它吗?". 好吧,几个月来我遇到了同样的问题,今天我有一个答案想 ...

  6. 贪心算法+回溯算法+动态规划

    一.贪心算法 1.分饼干问题 #思路:排序加贪心 先让胃口小的孩子满足 class Solution:def findContentChildren(self, g, s):print('==g:', ...

  7. 动态规划( python)

    动态规划的三要素:最优子结构,边界和状态转移函数,最优子结构是指每个阶段的最优状态可以从之前某个阶段的某个或某些状态直接得到(子问题的最优解能够决定这个问题的最优解),边界指的是问题最小子集的解(初始 ...

  8. LEETCODE-刷题个人笔记 Python(1-400)-TAG标签版本

    1. Array (1) 27. Remove Element(Easy) 给定数组nums和值val,在适当位置删除该值的所有实例并返回新长度. 思路: 不需要使用排序,如果等于该值,则将n-1的值 ...

  9. 算法题思路总结和leecode继续历程

    2018-05-03 刷了牛客网的题目:总结思路(总的思路跟数学一样就是化简和转化) 具体启发点: 1.对数据进行预处理排序的思想:比如8皇后问题 2.对一个数组元素进行比较的操作,如果复杂,可以试试 ...

最新文章

  1. inspinia中文管理后台_赤峰当地神马推广后台哪里有
  2. 实时数据库领域中有关数据压缩的认识误区
  3. 争取做一个良性循环的程序员
  4. Docker 17.12.0 发布
  5. 晶体封装越小esr越大_SuperFin晶体管技术加持!英特尔新一代10nm可媲美台积电5nm?...
  6. 怎么样才能写出出色的代码
  7. java使用原生语句操作mongo_Java 中 MongoDB 使用指南
  8. 第二章节 变量与数据类型
  9. hadoop漏洞_【漏洞公告】CVE-2017-7669:Apache Hadoop远程权限提升漏洞
  10. Linux 高性能集群搭建(1)---ssh节点通信
  11. 人脸检测于仕琪--libfacedetection
  12. 土木工程--钢筋下料软件(续)
  13. 可变模糊集理论matlab程序,可变模糊集理论.pdf
  14. 员工效率低下,责任在管理层的数学解释和分析
  15. U盘做成Mac启动盘之后怎么恢复成原来的U盘(U盘变成efi怎么恢复)
  16. ACL 2022 | PLATO-LTM:具有长期记忆机制的对话生成框架
  17. 头像 linux,头像制作大师下载-头像制作大师appv1.2.0-Linux公社
  18. win10装win7虚拟机教程
  19. ACE_Message_QueueACE_MT_SYNCH::putq ()使用时需要注意的地方
  20. Algorithm negotiation fail解决

热门文章

  1. ios7开发学习笔记-包括c oc 和ios介绍
  2. dnn中个性化服务的使用
  3. IHttpHandler与IHttpHandlerFactory的区别一例
  4. 系统带你学习 WebAPIs 第五讲
  5. gulp + browsersync实现页面自动刷新
  6. springboot工程打包时将application.properties放在jar包外
  7. shiro框架@RequiresPermissions 解释
  8. 【翻译】Designing Websites for iPhone X
  9. nodejs环境搭建与express安装配置
  10. 软件工程概论作业01