首页 > 代码库 > 软件工程第二次作业
软件工程第二次作业
最大子数组和的实现与测试
题目要求
给定源数组求该数组中和最大的子数组
算法思想
遍历源数组,每遍历一次用一个当前子数组和计数器(pseudoResult)将当前遍历过的数字加和,然后判断pseudoResult是否大于0,大于0的话就和最大子数组个计数器(result)比较,取两者较大值作为result的值,然后进行下一次循环;若pseudoResult小于等于0,pseudoResult的值置为0(意味着舍去之前计算的数组结果重新计算),然后进行下一次循环。
实现代码
https://coding.net/u/qianfeiqianlan/p/software_engineering_code/git
单元测试
安装vs2013 Unit Test Generator插件
在项目解决方案中添加单元测试项目
(SumMaximumSubArray为最大子数组求和,SumMaximumSubArrayTest为测试项目)
在测试项目中添加待测项目的引用
(添加后测试项目中的引用结构如图所示)
编写测试代码
1 using System; 2 using Microsoft.VisualStudio.TestTools.UnitTesting; 3 using SumMaximumSubArrayQuestion; 4 5 namespace SumMaximumSubArrayTest 6 { 7 [TestClass] 8 public class UnitTest1 9 {10 [TestMethod]11 public void SumMaximumSubArrayTest1()12 {13 int[] firstArray = { 1, -2, 3, -4, 5, 6, 0 };14 Assert.AreEqual(Program.SumMaximumSubArray(firstArray), 11);15 }16 17 [TestMethod]18 public void SumMaximumSubArrayTest2()19 {20 int[] secondArray = { 1, 2, 3, 4, -1, -7, 9 };21 Assert.AreEqual(Program.SumMaximumSubArray(secondArray), 11);22 }23 24 [TestMethod]25 public void SumMaximumSubArrayTest3()26 {27 int[] thirdArray = { 111, 20, 30, 44, -4, -7, 19 };28 Assert.AreEqual(Program.SumMaximumSubArray(thirdArray), 213);29 30 }31 32 [TestMethod]33 public void SumMaximumSubArrayTest4()34 {35 int[] fourthArray = { -4, 4, -2, 9, 7, -4, 1, 0, -3, 4 };36 Assert.AreEqual(Program.SumMaximumSubArray(fourthArray), 18);37 38 }39 40 [TestMethod]41 public void SumMaximumSubArrayTest5()42 {43 int[] fifthArray = { 1, 12, -3, 4, -1, -7, 9 };44 Assert.AreEqual(Program.SumMaximumSubArray(fifthArray), 15);45 46 }47 }48 }
tips:要是发现在测试项目中无法访问主项目中的类,原因是vs自动创建的Program类是私有的,下图是我改过的
最后就是运行单元测试观察结果了
写了五组数据,测试结果当然如预期一样通过了。完结撒花。
附录:
测试数据
用例编号 | 用例描述 |
输入数据 | 预期输出数据 | 实际输出数据 | 通过/不通过 | 评价 |
1 | 1, -2, 3, -4, 5, 6, 0 | 11 | 11 | true | ||
2 | 1, 2, 3, 4, -1, -7, 9 | 11 | 11 | true | ||
3 | 111, 20, 30, 44, -4, -7, 19 | 213 | 213 | true | ||
4 | -4, 4, -2, 9, 7, -4, 1, 0, -3, 4 | 18 | 18 | true | ||
5 | 1, 12, -3, 4, -1, -7, 9 | 15 | 15 | true |
单元测试参考博客:
http://az54.com/player/927.html?927-0-0
git使用教程参考博客:
http://blog.csdn.net/williamwang2013/article/details/8643714
软件工程第二次作业
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。