博客信息 沈阳航空航天大学计算机学院2020软件工程作业
作业要求 https://edu.cnblogs.com/campus/sau/Computer1701-1705/homework/10583
课程目标 熟悉一个“高质量”软件的开发过程
作业目标 单元测试练习

利用JUnit5进行单元测试练习

1.题目要求:

问题: 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。

当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n

例如,当(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)时,最大子段和为20。

-- 引用自《百度百科》

2程序实现:

  由于最近在自学Java,所以决心练习一下使用Java语言完成此次任务。本题为一个经典的求最大子列和问题,在学习数据结构课程时曾经练习过,不过有些遗忘,重新复习一下后最终写出了程序:

(1)演示:

(2)算法流程图:

3判定/条件覆盖

(1)由算法流程图可以看出来条件路径大致分为4条:

(a)a

(b)b-c-f

(c)b-c-d-g

(d)b-c-d-h

(2)此外判定可划分为:

(a1)i<sum      (a2)i=sum

(b1)ThisSum>MaxSum (b2)ThisSum<=MaxSum

(c1) ThisSum<0    (c2)ThisSum>=0

 而且由于程序中含有循环,其实一个测试用例即可满足判定/条件测试的要求,但这里为了更清晰表示,选了3个测试用例:

测试用例 覆盖路径 判定范围 预期结果
[1,2,3,4,5] b-c-f/a a1 a2 b1 c2 15
[-1,-2,-3,-5] b-c-d-g/a a1 a2 b2 c1 0
[2,-1,-1] b-c-d-h/b-c-f/a a1 a2 b1 b2 c2 2
(3)利用Eclipse中JUnit5工具实现单元测试

 测试代码:

import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
class MaxSubseqSumTest {
private MaxSubseqSum test=new MaxSubseqSum(8);
public void InitSub(int n,int[] a)
{
test.set(n);
test.clear();
for(int k:a)
{
test.add(k);
}
}
@Test
void testCalculate_1() {
int[]a= {1,2,3,4,5};
InitSub(5, a);
assertEquals(15,test.Calculate());
}
@Test
void testCalculate_2()
{
int[]a= {-1,-2,-3,-5};
InitSub(4, a);
assertEquals(0,test.Calculate());
}
@Test
void testCalculate_3()
{
int[]a= {2,-1,-1};
InitSub(3, a);
assertEquals(2,test.Calculate());
}
}

 测试结果图:

 代码地址:点我,点我!!

 附:PSP工作记录表:

项目 记录结果
日期 2020-4-5
开始时间 15:00
结束时间 21:00
编码行数 57
错误数量 0

最新文章

  1. css面包屑导航编号
  2. ThinkPHP 3.2 获取页面运行时间
  3. Android登录等待效果
  4. 墙内下载DropBox离线安装包的方法
  5. location(未完)
  6. NIO提升系统性能
  7. July 13th, Week 29th Wednesday, 2016
  8. poj 1990 MooFest
  9. javascript中数组的迭代等操作
  10. 深入理解jsavascript的作用域
  11. JVM参数配置大全
  12. UVA 10561 Treblecross(博弈论)
  13. C#中IList&lt;T&gt;与List&lt;T&gt;的区别感想【转】
  14. 201521123079《java程序设计》第10周学习总结
  15. Python魔法方法(转发整合)
  16. 【ZOJ 3609】Modular Inverse 最小乘法逆元
  17. PS调出韩式米黄色室内婚纱照片
  18. postgresql清理工具
  19. 主机WiFi时,vmware ubuntu 桥接上网
  20. Jenkins以root用户运行的方法

热门文章

  1. 如何完整卸载sketchup草图大师?
  2. 没有可用软件包 iostat。
  3. ELKF搭建
  4. APP与Web测试区别
  5. PCB Layout之EMMC_Flash走线总结@@@
  6. esxi虚拟机定时创建快照
  7. linux 安装 talib 的完美姿势!
  8. MogDB 学习笔记之 --exchange partition
  9. No.1.2
  10. 睿爸信奥-【临阵磨枪】练习赛(第一场)- T3