软工第二次作业:
1、在个人电脑中安装一个集成开发环境(Microsoft Visual Studio、Eclipse或其它工具均可),要求该环境能够提供单元自动测试功能;
2、记录安装过程,并将全部内容发表在博客中;
3、实现最大子数组和算法,并将该段代码上传至Coding.net系统中;
4、自行选择合适的覆盖标准并设计测试用例对该段代码进行测试,并将测试结果发布在博客中,结果以如下表格形式完成。
本文为干货,希望有用,欢迎评论。
由于我的labtop上安装的是ubuntu16.04系统,其上不支持VS,固决定安装Eclipse以便日后开发。下面介绍ubuntu16.04系统下安装Eclipse的具体步骤:
- 下载jdk:jdk-8u101-linux-x64.tar.gz
- 下载Eclipse:eclipse-jee-luna-SR2-linux-gtk-x86_64.tar.gz(下载资源可移步官网)
- 将jdk解压到/usr/local文件夹中。双击压缩文件解压到/home目录下,后将文件通过终端命令转移到/usr/local目录下:mkdir /usr/local———创建一个新文件夹
(另外可以直接用终端命令sudo tar zxvf jdk-8u101-linux-x64.tar.gz -C /usr/local达到上述目的。需要注意的是网上下载的压缩文件默认保存在/home/download下,如果直接用上述命令从这一目录解压文件到目标目录下,就会提示找不到这一文件,我试着先把文件解压到/home下,再通过root权限移动文件,结果就成功了,至于原因还请知道的大神不吝赐教~)
- 配置jdk环境变量。命令:sudo vim /etc/profile———使用vim打开文件,并在文件尾添加如下语句:
JAVA_HOME=/opt/jvm/jdk1.8.0_77export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${JAVA_HOME}/bin:$PATH
查看是否安装成功:java -version,若显示如下,则说明安装成功。
- 安装Eclipse。将其用同样的方法解压到/usr/local文件夹中。
- 创建Eclipse桌面快捷方式。在中端输入:sudo gedit /usr/share/applications/eclipse.desktop——弹出文本编辑器,忽略终端警告,在文本编辑器中输入:
[Desktop Entry]Type=ApplicationName=EclipseComment=Eclipse Integrated Development EnvironmentIcon=/usr/lib/eclipse/icon.xpmExec=/usr/lib/eclipse/eclipseTerminal=false
保存并退出,安装完成。
- 之后在文件夹中找到eclipse图标,双击即可打开。
(补充:在这里安利一款linux下功能强大的截图软件ksnapshot。在命令行输入:sudo apt-get install ksnapshot,等待安装完成之后就可以自由自在的截屏了~)
另外,百度了一下什么叫“单元自动测试”,这里介绍的挺详细的:,但我还是一头雾水,有兴趣的朋友可以看一下。
最大子数组和算法实现以及单元测试
代码实现代码:
package test; import java.util.*; public class MaxSubArraySum { public static void main(String []args) { int len, res; Scanner scan = new Scanner(System.in); len = scan.nextInt(); int []a = new int [len]; for(int i = 0; i < len; i++) a[i] = scan.nextInt(); res = Method(a, len); System.out.println("该数组的最大子数组和为:" + res); } static int Method(int []a, int len) { int i; int MaxSum = 0; int CurSum = 0; for(i = 0; i < len; i++){ CurSum += a[i]; if(CurSum > MaxSum) MaxSum = CurSum; if(CurSum < 0) CurSum = 0; } return MaxSum; } }
单元测试代码:
package test;import static org.junit.Assert.*;import org.junit.After;import org.junit.Before;import org.junit.Test;public class MaxSubArraySumTest { @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @Test public void testMethod1() { int len = 5; int []a = {1,2,3,4,1}; System.out.println("该数组的最大子数组和为:" + MaxSubArraySum.Method(a, len)); } @Test public void testMethod2() { int len = 5; int []a = {1,2,3,-4,-1}; System.out.println("该数组的最大子数组和为:" + MaxSubArraySum.Method(a, len)); } @Test public void testMethod3() { int len = 4; int []a = {1 ,4 ,-5, 6}; System.out.println("该数组的最大子数组和为:" + MaxSubArraySum.Method(a, len)); } @Test public void testMethod4() { int len = 4; int []a = {1, 0, -1, 2, -1, 3}; System.out.println("该数组的最大子数组和为:" + MaxSubArraySum.Method(a, len)); } }
运行结果:
代码托管: