軟工第二次作業:
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_77 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
查看是否安裝成功:java -version,若顯示如下,則說明安裝成功。
- 安裝Eclipse。將其用同樣的方法解壓到/usr/local文件夾中。
- 創建Eclipse桌面快捷方式。在中端輸入:sudo gedit /usr/share/applications/eclipse.desktop——彈出文本編輯器,忽略終端警告,在文本編輯器中輸入:
[Desktop Entry] Type=Application Name=Eclipse Comment=Eclipse Integrated Development Environment Icon=/usr/lib/eclipse/icon.xpm Exec=/usr/lib/eclipse/eclipse Terminal=false
保存並退出,安裝完成。
- 之后在文件夾中找到eclipse圖標
,雙擊即可打開。
(補充:在這里安利一款linux下功能強大的截圖軟件ksnapshot。在命令行輸入:sudo apt-get install ksnapshot,等待安裝完成之后就可以自由自在的截屏了~)
另外,百度了一下什么叫“單元自動測試”,這里介紹的挺詳細的:http://www.infoq.com/cn/articles/road-of-automated-unit-testing-practices/,但我還是一頭霧水,有興趣的朋友可以看一下。
最大子數組和算法實現以及單元測試
代碼實現代碼:
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)); } }
運行結果: