《构建之法》——第二次作业
GIT地址 | git地址 |
---|---|
GIT用户名 | Luo-Star |
学号后五位 | 62309 |
博客地址 | 个人博客首页 |
作业链接 | 作业链接 |
一、 配置环境
关于环境配置,我之前是配置过vs2017,但是当时我装的时候没有装c#的组件,所以需要重新进行安装。但是在重新进行安装的问题是,Visual Studio Installer下载安装的速度确实太慢了,所以我换了一种方式,我是下载的离线版本的VS2015(带有c++模块的)
上图是正在安装的图片,因为是离线版本,所有的组件已经下载完整了的,就只用执行安装就好了,还是非常快的
这个是一个基础环境的配置,Development Settings 选择General 就行不用选择 C# ,我们可以进去之后建立C#的项目,主题的话,我个人比较喜欢深色,选择了Dark。
到这里的话,基本上就完成了软件的安装了,c++的环境软件安装包自动的配置好了。
二、 代码设计的思路
自动生成小学四则运算题目与解决题目
首先要解决的问题是随机产生四则运算符号符号和随机产生数的问题,符号有+,-,*,/ 四种,随机数是在0-100中随机产生,那么就需要用到随机函数了
上图是我定义的Symbol类中的一个随机产生符号的方法,定义一个字符数组,数组中存储了四种运算符号,通过产生随机数当做数组下标来随机产生符号,并将产生的符号转换成字符串返回,但是本身C#中的产生随机数的函数就是产生的伪随机数,如果调用过快,产生的就会是一样的数,所以我加了Thread.Sleep(15); 这个休眠函数,防止产生的符号全部一样
同样的,获得随机数的方法与获得符号的方法类似,如上图
既然已经做好了随机产生运算符号和数的情况下,接下来自然是将随机产生的这些数和符号组成表达式,TwoSymbolCal()这个方法是产生含有两个运算符号的运算式子,在这个方法中,实例化一个Symbol a,通过调用 Symbol中的两个随机产生函数,获得随机符号和数字,并拼接成一个字符串(为啥是拼接成一个字符串呢?因为Compute方法的参数只接受字符串类型),利用DataTable的Compute方法进行计算最终的结果,再将最终结果拼接到之前计算表达式的字符串中,
这是产生含有三个运算符号的式子的方法,大体上和产生含有两个运算符号的运算式子的方法一样,这里就不多说
最后是主函数,主函数先让用户输入一个数,这个数代表题目数,然后进入while循环,因为是随机产生2-3个运算符号的式子,利用同样的方法,随机产生一个数并对2取余,如果余数为0,那么产生含有两个运算符号的运算式子,如果余数为1,那么产生含有三个运算符号的运算式子。然后我们判断返回的结果中是否包含了负号和小数点,如果有则重新生成,如果没有就写入文本文件中。
三、github克隆项目以及提交代码的整个过程记录
1.GitHub克隆项目
这里已经成功从阿超克隆到自己仓库,但是在我安装好git之后,运行git bash时,没办法用教程中的那个方法进行克隆,
随后我进行了百度,当我们需要进行克隆项目到本地的时候需要进行验证,而git的验证方式有两个,一种是使用SSH进行验证,另一种是https进行验证,我选择了使用SSH来进行验证。
首先在 git bash中设置git的user name和email,邮箱是自己注册git的时候的邮箱,如上图所示
然后进行密钥的生成,最后在本地会得到两个文件,如下图
创建好了之后,我们还需要在git上面添加我们刚刚生成的ssh密钥,进入git的个人主页中的 settings,如下图
然后找到SSH and GPG keys进行添加SSH密钥,注意因为生成两个文件,我们只要将后缀为.pub中的内容复制到key中,Title自己可以随便取一个然后点击 Add SSH key 就好了,然后我们可以进行测试一下
好了,到这里,我就可以成功的用SSH进行克隆了。
克隆的时候应该注意一下,应该克隆自己账号下的某个仓库,我之前就很盲目的照着教程一步步走,克隆命令也是,所以也导致了出错,所以我们在看教程的时候,也要动点脑子,不能一味的去照抄照搬。到这里的话,我的克隆过程也基本完成了。
2.代码提交
代码提交没什么大的问题,但还是有一个小小的问题,在从远程仓库中克隆了到本地之后,在克隆的文件夹中建立了一个文件夹用于放置自己的代码,但是无法上传到远程仓库
利用git push 上传的时候提示我everything up-to-date,我以为我上传成功了,但是在远程仓库根本找不到,继续百度了一下,原因是没有git commit -m "提交信息"
在我执行git commit -m "提交信息"了这条命令之后,在上传到远程仓库,就完成了。
四、对项目进行单元测试和回归测试的过程
1.对项目进行单元测试
进行单元测试这个确实花了我很多时间,因为我的方法返回的是随机的符号和随机生成的数字,而单元测试中,Assert断言函数所提供的功能是实现期望值和实际值的对比,只能是两个确定的,也可能是我比较菜,我就用了一个最笨的办法。如下图
上图测试的一个随机生成运算符号的方法,因为返回的是字符数组中的随意的一个,我也不知道生成的是啥,我就用了一个if语句判断,如果生成是四个中的任意一个那么测试通过,否则不通过。因为我的方法,都是返回的这样的随机的,所以其他的测试方法是一样的。
最后这张图是对随机生成运算符的单元进行测试的结果。
2.对项目进行回归测试
在我们对代码修复、改进或重构之后,还要重新运行一遍单元测试,看看是否满足之前的样例。对自己代码进行回归测试, 没有遇到特别大的问题,在此就不上传截图了。
3.效能分析测试
上图是即将对我的程序进行CPU使用率的效能查看。
上面两个图,第一个是正在测试运行程序时的CPU使用率,第二张图是分析报告。
五、总结
最开始做这一次作业的时候,因为在代码段困了很久,我当时以为写代码是最痛苦的,本身自己不是很熟悉C#,语法什么的都忘得差不多了,但是当我艰难的写完代码段的时候,发现需要对自己写的代码进行测试,这就更让我很懵了,因为自己写的代码不是很好测试,因为每个单元都是生成的随机的数或者随机的符号,最后用了一个比较笨的办法还是实现了,对自己代码的单元测试。这次作业,让我对以前一些已经遗忘了的知识又重新拾捡起来,比如单元测试中的Assert断言函数,C#中的数组定义,类中的方法的创建,类中方法的自身调用等等,还有怎么去创建一个单元测试并对自己的代码进行测试,在已修改代码还要进行回归测试以及对代码的运行效能进行分析查看,以便于自己对某一个模块的代码进行改进以提高效率。