分享五個Java程序員必須掌握的工具。
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于做網(wǎng)站、成都做網(wǎng)站、永州網(wǎng)絡(luò)推廣、微信小程序開發(fā)、永州網(wǎng)絡(luò)營銷、永州企業(yè)策劃、永州品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供永州建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
1、SparkJava
這是針對Java開發(fā)者的一個新的輕量級以及強(qiáng)大的Web應(yīng)用框架。Spark擁有簡單和直接的方法,你可以使用Spark框架,通過做一些繁瑣的XML配置來編碼應(yīng)用。Spark助你更輕松的開發(fā)Java Web應(yīng)用。
2、jClarity
jClarity是兩個產(chǎn)品的組合,其中illuminate用于性能監(jiān)控,census則用于收集日志和分析數(shù)據(jù),框架是輕量級的,并且非常的緊湊。
3、Clover
Clover是一款偉大的用于代碼覆蓋的工具,該工具有助于編寫對應(yīng)用測試有用的代碼。你可以在IDE或持續(xù)集成系統(tǒng)中運(yùn)行Clover。工具優(yōu)化于提升你的測試速度。
4、jProfiler
jProfiler有直觀的用戶界面,可以幫助你解決性能瓶頸以及理解問題。你可以很容易的確定內(nèi)存泄漏并使用jProfiler修復(fù)線程問題。
5、Visualvm
Visualvm是一款免費(fèi)的、集成了多個JDK命令行工具的可視化工具,它能為您提供強(qiáng)大的分析能力,對Java應(yīng)用程序做性能分析和調(diào)優(yōu)。
以上就是和大家分享的關(guān)于Java工程師必須掌握的五個工具。
單元測試是我們在軟件開發(fā)過程中經(jīng)常用到的一種軟件測試的方法,而今天我們就一起來了解一下,一個好的單元測試都是如何來編輯完成的。
1.使用框架來用于單元測試
Java提供了若干用于單元測試的框架。TestNG和JUnit是流行的測試框架。JUnit和TestNG的一些重要功能:
易于設(shè)置和運(yùn)行。
支持注釋。
允許忽略或分組并一起執(zhí)行某些測試。
支持參數(shù)化測試,即通過在運(yùn)行時(shí)指定不同的值來運(yùn)行單元測試。
通過與構(gòu)建工具,如Ant,Maven和Gradle集成來支持自動化的測試執(zhí)行。
EasyMock是一個模擬框架,是單元測試框架,如JUnit和TestNG的補(bǔ)充。EasyMock本身不是一個完整的框架。它只是添加了創(chuàng)建模擬對象以便于測試的能力。例如,我們想要測試的一個方法可以調(diào)用從數(shù)據(jù)庫獲取數(shù)據(jù)的DAO類。在這種情況下,EasyMock可用于創(chuàng)建返回硬編碼數(shù)據(jù)的MockDAO。這使我們能夠輕松地測試我們意向的方法,而不必?fù)?dān)心數(shù)據(jù)庫訪問。
2.謹(jǐn)慎使用測試驅(qū)動開發(fā)!
測試驅(qū)動開發(fā)(TDD)是一個軟件開發(fā)過程,在這過程中,在開始任何編碼之前,我們基于需求來編寫測試。由于還沒有編碼,測試初會失敗。然后寫入小量的代碼以通過測試。然后重構(gòu)代碼,直到被優(yōu)化。
目標(biāo)是編寫覆蓋所有需求的測試,而不是一開始就寫代碼,卻可能甚至都不能滿足需求。TDD是偉大的,因?yàn)樗鼘?dǎo)致簡單的模塊化代碼,且易于維護(hù)??傮w開發(fā)速度加快,容易發(fā)現(xiàn)缺陷。此外,單元測試被創(chuàng)建作為TDD方法的副產(chǎn)品。
然而,TDD可能不適合所有的情況。在設(shè)計(jì)復(fù)雜的項(xiàng)目中,專注于簡單的設(shè)計(jì)以便于通過測試用例,而不提前思考可能會導(dǎo)致巨大的代碼更改。此外,TDD方法難以用于與遺留系統(tǒng),GUI應(yīng)用程序或與數(shù)據(jù)庫一起工作的應(yīng)用程序交互的系統(tǒng)。另外,測試需要隨著代碼的改變而更新。
因此,在決定采用TDD方法之前,應(yīng)考慮上述因素,并應(yīng)根據(jù)項(xiàng)目的性質(zhì)采取措施。
3.測量代碼覆蓋率
代碼覆蓋率衡量(以百分比表示)了在運(yùn)行單元測試時(shí)執(zhí)行的代碼量。通常,高覆蓋率的代碼包含未檢測到的錯誤的幾率要低,因?yàn)槠涓嗟脑创a在測試過程中被執(zhí)行。云南電腦培訓(xùn)發(fā)現(xiàn)測量代碼覆蓋率的一些佳做法包括:
使用代碼覆蓋工具,如Clover,Corbetura,JaCoCo或Sonar。使用工具可以提高測試質(zhì)量,因?yàn)檫@些工具可以指出未經(jīng)測試的代碼區(qū)域,讓你能夠開發(fā)開發(fā)額外的測試來覆蓋這些領(lǐng)域。
1、Jasmine
Jasmine是一個行為驅(qū)動的測試開發(fā)框架,用于對JavaScript代碼進(jìn)行測試。它不依賴其它任何JavaScript框架,也不需要DOM。它的語法簡潔、明確,寫測試非常容易。
2、Mocha
Mocha是一個功能豐富的JavaScript測試框架,既運(yùn)行于Node.js環(huán)境中,也可以運(yùn)行于瀏覽器環(huán)境中。Mocha以串行方式運(yùn)行測試,能做出靈活而準(zhǔn)確的報(bào)告,也能將測試中未捕捉的異常映射到正確的測試用例。
3、Chai
Chai是個支持BDD/TDD的庫,可用于node和瀏覽器,可配合任何JavaScript測試框架使用。
4、QUnit
QUnit是個功能強(qiáng)大又易于使用的JavaScript單元測試框架。jQuery、jQueryUI和jQueyMobile項(xiàng)目都使用這個框架,它能測試普通的JavaScript代碼。
5、Sinon
Sinon.JS為JavaScript提供了獨(dú)立的spies、stubs和mocks[譯者注:Spy、Stub和Mock都是測試專用名詞,Stub常被翻譯為樁,spies是Spy的復(fù)數(shù)形式,是一種可以監(jiān)視方法、調(diào)用和參數(shù)的技術(shù)]。它不依賴任何東西,可以配合任何單元測試框架工作。
6、Karma
Karma是針對連通瀏覽器的一個框架無關(guān)測試運(yùn)行器。每一個測試結(jié)果對應(yīng)每個瀏覽器,它的測試和顯示都是通過命令行暴露給開發(fā)者的,這樣他們就可以看到瀏覽器測試的通過或失敗。
7、Selenium
Selenium有一個簡單的目標(biāo):就是自動化瀏覽器。它主要用于自動化測試web應(yīng)用程序,但是只是很簡單地考慮到了基于網(wǎng)絡(luò)的管理任務(wù)。
8、WebdriverIO
WebdriverIO允許用戶僅添加幾行代碼就可以控制瀏覽器或移動應(yīng)用程序,使測試代碼更簡單、簡潔、易讀。集成的TestRunner同樣允許你以同步的方式調(diào)用異步命令,這樣你不需要關(guān)心如何處理Promise以避免競態(tài)條件。此外,它取消了所有的繁瑣的設(shè)置工作,并且會為您管理的Selenium會話。
9、Nightwatch
Nightwatch.js是一個易于使用的Node.js,它是為基于瀏覽器的app和網(wǎng)站設(shè)計(jì)的終端到終端(E2E)的測試方法。它使用強(qiáng)大的W3CWebDriverAPI,用于在DOM元素上執(zhí)行命令和斷言。
10、PhantomCSS
PhantomCSS獲得CasperJS捕獲的屏幕截圖,并使用Resemble.js將其與基準(zhǔn)圖進(jìn)行對比,以測試RGB像素差異。java課程發(fā)現(xiàn)PhantomCSS然后生成圖像差異對比,用于幫助您找到原因。
11、PhantomFlow
PhantomFlow使用決策樹提供UI測試方案。針對PhantomJS,CasperJS和PhantomCSS的NodeJS包裝器——PhantomFlow能夠流暢地在代碼中描述用戶流程,同時(shí)生成用于可視化的結(jié)構(gòu)化樹數(shù)據(jù)。
我們在做性能測試時(shí),有時(shí)需要自己編寫測試腳本,很多測試工具都支持自定義編寫測試腳本,比如LoadRunner就有很多自定義腳本的協(xié)議,比如"C?Vuser","Java?Vuser"等協(xié)議.同樣,Jmeter也支持自定義編寫的測試代碼,不過與LoadRunner不同的是,Jmeter沒有自帶編譯器,需要借助第三方編譯器才能實(shí)現(xiàn).下面舉一個簡單的Java自定義測試代碼例子,使用Java編譯器編寫測試代碼(Java編譯器可以用Eclipse,JBulider等),實(shí)現(xiàn)功能為:在測試前輸入任意一個字符串,然后判斷該字符串的長度是否大于5,如果大于則測試結(jié)果成功,否則測試結(jié)果位失敗,然后在放到Jmeter中模擬10個用戶測試,同時(shí)運(yùn)行這段代碼,具體實(shí)現(xiàn)如下:
1.打開Java編譯器,新建一個項(xiàng)目"TestLength",然后新建一個包"app".
2.從Jmeter的安裝目錄lib/ext中拷貝兩個文件"ApacheJMeter_core.jar"和"ApacheJMeter_java.jar"到"Tester"的項(xiàng)目中,然后引入這兩個JAR文件.(具體的引入方法參考各個Java編譯器的使用方法)
3.在"app"包中新建一個類,名字叫"TestLength",不過這個類要繼承"AbstractJavaSamplerClient"類,如果項(xiàng)目引入步驟二中的兩個文件,就可以找到"AbstractJavaSamplerClient"類了.
4."TestLength"類在繼承"AbstractJavaSamplerClient"類的同時(shí)也會繼承四個方法,分別是"getDefaultParameters","setupTest","runTest"和"teardownTest"方法."getDefaultParameters"方法主要用于設(shè)置傳入的參數(shù);"setupTest"方法為初始化方法,用于初始化性能測試時(shí)的每個線程."runTest"方法為性能測試時(shí)的線程運(yùn)行體;"teardownTest"方法為測試結(jié)束方法,用于結(jié)束性能測試中的每個線程.
5.具體實(shí)現(xiàn)代碼如下:
package?app;
import?org.apache.jmeter.config.Arguments;
import?org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import?org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import?org.apache.jmeter.samplers.SampleResult;
import?com.passpod.core.t8.*;
/**
*?@author樂以忘憂
*
*?TODO?To?change?the?template?for?this?generated?type?comment?go?to
*?Window?-?Preferences?-?Java?-?Code?Style?-?Code?Templates
*/
public?class?TestLength?extends?AbstractJavaSamplerClient{
private?SampleResult?results;
private?String?testStr;
//初始化方法,實(shí)際運(yùn)行時(shí)每個線程僅執(zhí)行一次,在測試方法運(yùn)行前執(zhí)行,類似于LoadRunner中的init方法
public?void?setupTest(JavaSamplerContext?arg0)?{
results?=?new?SampleResult();
testStr?=?arg0.getParameter("testString",?"");
if?(testStr?!=?null??testStr.length()??0)?{
results.setSamplerData(testStr);
}
}
//設(shè)置傳入的參數(shù),可以設(shè)置多個,已設(shè)置的參數(shù)會顯示到Jmeter的參數(shù)列表中
public?Arguments?getDefaultParameters()?{
Arguments?params?=?new?Arguments();
params.addArgument("testStr",?"");???//定義一個參數(shù),顯示到Jmeter的參數(shù)列表中,第一個參數(shù)為參數(shù)默認(rèn)的顯示名稱,第二個參數(shù)為默認(rèn)值
return?params;
}
//測試執(zhí)行的循環(huán)體,根據(jù)線程數(shù)和循環(huán)次數(shù)的不同可執(zhí)行多次,類似于LoadRunner中的Action方法
public?SampleResult?runTest(JavaSamplerContext?arg0)?{
int?len?=?0;
results.sampleStart();?????//定義一個事務(wù),表示這是事務(wù)的起始點(diǎn),類似于LoadRunner的lr.start_transaction
len?=?testStr.length();
results.sampleEnd();?????//定義一個事務(wù),表示這是事務(wù)的結(jié)束點(diǎn),類似于LoadRunner的lr.end_transaction
if(len??5){
System.out.println(testStr);
results.setSuccessful(false);???//用于設(shè)置運(yùn)行結(jié)果的成功或失敗,如果是"false"則表示結(jié)果失敗,否則則表示成功
}else???
results.setSuccessful(true);
return?results;
}
//結(jié)束方法,實(shí)際運(yùn)行時(shí)每個線程僅執(zhí)行一次,在測試方法運(yùn)行結(jié)束后執(zhí)行,類似于LoadRunner中的end方法
public?void?teardownTest(JavaSamplerContext?arg0)?{
}
}
6.把上面的例子打包,然后把生成的"TestLength.jar"文件拷貝到Jmeter的安裝目錄lib/ext下.
7.運(yùn)行Jmeter,添加一個線程組,然后在該線程組下面添加一個Java請求(在Sampler中),在Java請求的類名稱中選擇咱們剛創(chuàng)建的類"app.TestLength",在下面參數(shù)列表的"testStr"后面輸入要測試的字符串,然后添加一個監(jiān)聽器(聚合報(bào)告),設(shè)置一下模擬的用戶數(shù)就可以測試了.如果測試不成功,Jmeter會在它自己個輸出框中拋出這個字符串.
通過上面的例子我們可以發(fā)現(xiàn),使用Jmeter自定義Java測試代碼,配合Jmeter自帶的函數(shù),就可以實(shí)現(xiàn)出LoadRunner中"Java?Vuser"協(xié)議的絕大多數(shù)功能,而且是沒有用戶數(shù)限制和完全免費(fèi)的(嘿嘿).上面的例子非常簡單,而且沒有任何實(shí)際意義,只是一個簡單的Jmeter測試代碼示例,用于拋磚引玉,希望大家一起交流,共同?進(jìn)步.
Eclipse界面介紹
1
1)啟動Eclipse軟件
2)對總體界面進(jìn)行簡單介紹
2
1 對Package explorer(包瀏覽器)簡單介紹下,
2 包瀏覽器中樹形結(jié)構(gòu)顯示可以單擊打開和關(guān)閉節(jié)點(diǎn)
3 可以通過navigate-show in-package explorer打開
END
創(chuàng)建一個Java工程
1
新建一個Java工程:
1) 可以通過快速啟動欄創(chuàng)建點(diǎn)擊圖標(biāo)-JavaProject
2) 通過菜單欄創(chuàng)建file-New-JavaProject
2
為工程創(chuàng)建一個類:
1)單擊選中工程
2)右鍵單擊選擇new
3)單擊class新建類
4)設(shè)置類名
5)點(diǎn)擊右下角確定按鈕
3
包和類創(chuàng)建完成后接可以再包瀏覽器中雙擊類名在代碼編輯區(qū)打開類對類進(jìn)行代碼編輯了
END
軟件運(yùn)行測試
在代碼編輯區(qū)編輯必要的代碼,代碼編寫過程中要記得保存以免停電等原因造成代碼丟失
1)代碼編寫好后點(diǎn)擊快速啟動欄的run as圖標(biāo)
2)選Java application-確定
3)選中我們要運(yùn)行的程序-確定
在軟件最下面我們就可以看到運(yùn)行的結(jié)果了