首页 > 代码库 > 软件工程第二次作业

软件工程第二次作业

最大子数组和的实现与测试

  • 题目要求

  给定源数组求该数组中和最大的子数组

  • 算法思想

  遍历源数组,每遍历一次用一个当前子数组和计数器(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
1111

true

 
2 
1, 2, 3, 4, -1, -7, 9
1111true 
3 
111, 20, 30, 44, -4, -7, 19
213213true 
4 
-4, 4, -2, 9, 7, -4, 1, 0, -3, 4
1818true 
5 
1, 12, -3, 4, -1, -7, 9
1515true 

 

 

 

 

 

 

 

 

 

 

单元测试参考博客:

http://az54.com/player/927.html?927-0-0

git使用教程参考博客:

http://blog.csdn.net/williamwang2013/article/details/8643714

 

软件工程第二次作业