VS2015安装常见问题与单元测试
VS的安装过程就不用详细说了,下载好镜像用虚拟光驱加载后安装就好。建议下载iso安装镜像,而不是下载exe在线安装文件,除非你的网超级快…
到这里找下载:https://www.visualstudio.com/downloads/
用免费的社区版就好。Visual Studio Community 2015 with Update 3 – Free
虽然专业版的key网上也有… 专业版:HMGNV-WCYXV-X7G9W-YCX63-B98R2
自定义安装选项比较多,如果都选的话,C盘大概占用60个G的空间…当然用不上的功能可以先不装,以后再装也可以。
安装过程非常的慢,如果电脑配置低加上网速又慢,你还全勾选了…那装一天都是可能的,反正不要打断它的安装就是了。
虽然安装时间很长…但这东西超好用!
安装常见的问题:
- 如果你想开发C++用,不要用默认的安装设置,默认只安装C#/.Net环境。自定义安装时候有关C++的选项要装全。当然跨平台移动开发不需要的可以不装。
- 开发UWP应用要用Win10。Win7和8.1就不要装Win10 SDK了,貌似也装不上。
- 由于不可描述的网络原因,有关Python、Git、GitHub、Android、iOS的安装选项选了后都可能让安装变得十分缓慢,因为容易下载失败…也许需要梯子。
- 如果你勾选了Win10 SDK,在校园网环境下安装可能会提示“安装程序失败,哈希数值不正确”。目前没找到解决办法,想装最好找个网好的地方…
- 安装位置可以选择,即使不安装在C盘,C盘也会被占用很大的空间。
- 系统不要用精简版的,用原版!否则一定装不上!
- VS安装会开启Windows系统功能中的Hyper-V虚拟机,用于调试跨平台应用,会与其他虚拟机软件冲突。必要时,可在启用或关闭Windows功能中关闭Hyper-V。
单元测试方法(C#)
使用VS2015用C#开发应用时,单元测试无需另装任何插件。VS2015中已集成了单元测试功能。
这里我们以求最大子数组和的代码为例简述单元测试方法。
新建控制台应用程序
利用动态规划求最大子数组代码如下:
namespace 最大子数组 { public class Program { public int maxSubArray(int[] A, int n) { int cursum = A[0]; int maxsum = A[0]; for (int i = 0; i < n; i++) { if (cursum < 0) cursum = 0; cursum += A[i]; if (cursum > maxsum) maxsum = cursum; } return maxsum; } static void Main(string[] args) { int[] A = { -2, 5, 3, -6, 4, -8, 6 }; Program fuc = new Program(); Console.WriteLine(fuc.maxSubArray(A, A.Length)); Console.ReadKey(); } } }
直接右键,点创建单元测试
保持默认就好
添全测试用的代码,可以写好多组。
[TestMethod()] public void maxSubArrayTest1() { Program test = new Program(); int[] A = { -2, 5, 3, -6, 4, -8, 6 }; Assert.AreEqual(test.maxSubArray(A, A.Length), 8); } [TestMethod()] public void maxSubArrayTest2() { Program test = new Program(); int[] A = { 0,0,0 }; Assert.AreEqual(test.maxSubArray(A, A.Length), 0); }
Assert.AreEqual(test.要测试的函数(传参), 期待得到的结果);
总共写了5组测试用例:
用例编号 | 用例描述 | 测试数据 | 期望输出 | 实际输出 | 测试结果 |
1 | 有正有负 | -2, 5, 3, -6, 4, -8, 6 | 8 | 8 | 通过 |
2 | 全0 | 0,0,0 | 0 | 0 | 通过 |
3 | 一个负数 | -2 | -2 | -2 | 通过 |
4 | 全是负数 | -6, -5, -4, -3 | -3 | -3 | 通过 |
5 | 最大子数组包含负数 | -2, 5, 3, -6, 10 , -8, 6 | 12 | 12 | 通过 |
右键运行测试
或者点左边的全部运行
附:最大子数组和算法
给一组数:-2, 5, 3,-6, 4,-8, 6
最大子数组和就是找到数组里和最大的连续的一串数。显然数组里要有负数,要不就直接是整个数组了…比如上面那一串和最大的一串就是5+3=8
5+3完事儿再-6,和就变少了,但不见得往后就不用看了,后面那4要是换成10,那答案就变成12了…
所以我们加上一个正数时候和会增加,加上一个负数时候和会减少,如果加完那个负数的和变成负的了,那就没必要继续累加了,直接清零从后一个数开始累加吧,不然这个负数会减少接下来累加的和的。
所以我们用cursum记录正在算的和,用maxsum记录之前得到的最大的和。A是数组,n是元素个数。
伪代码如下:
1 int maxSubArray(int *A, int n) 2 { 3 cursum = A[0]; 4 maxsum = A[0]; 5 for i = 1 to n-1 6 if cursum < 0 7 cursum = 0; 8 cursum += A[i]; 9 if cursum > maxsum 10 maxsum = cursum; 11 return maxsum; 12 }
本文代码下载:https://coding.net/u/dreamtofly/p/MaxSubArraySum--Unit-test/git