在寫新代碼前寫一個失敗的測試用例 消除重複
沒有測試的功能=沒有的功能 有測試=可重構 有測試> 有文檔
CL: java -cp junit.jar junit.textui.TestRunner className.methodName Ant, Maven, Gradle, IDE Keep the bar green to keep the code clean
Tests are the Programmer’s Stone, transmuting fear into boredom.
Cagetory, TestSuit, TestRunner
保持代碼的可測試性:html
new
許多狀況下更方便測試, 爲方便new,可借鑑Builder
工廠化方法模式@Autowired
須要@WebAppConfiguration @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath*:/spring-test.xml" }) ...
Keep simplejava
解耦方法:git
目錄結構,分離test與src 測試代碼與正式代碼分開放到不一樣文件目錄 src/main/java src/test/java 但每一個類的測試類與被測試類採用一樣的包名 src/main/java/com/example/MyBeauty.java src/test/java/com/example/MyBeautyTest.java 依賴分離 maven dependency依賴增長 <scope>test</scope> gradle 依賴增長 testCompile 後綴 方法命名以test開頭,兼容JUnit3,4,5 AclassTest.testMethod()
依賴容器的測試:Jetty的配置 集成測試:mvn integration-test Selenium相應配置,瀏覽器插件
配置文件spring-test.xml,pom_test.xml 經過 註解和mvn -f 參數分別指定 Spring MVC測試:mockMvc (略) Spring security 權限處理:(略)
BDD vs TDD http://farenda.com Java programming tutorials with many code examples! https://github.com/spockframework smarter-testing-with-spock.pdf spock-next-generation.pdf
基於Groovy Groovy Grape Geb Gradle ... 測試類須要繼承自 Specification(說明書)
class MyBeautyControllerSpec extends Specification {
標記關鍵詞 Spec: when then expect given where
擴展:GebSpec //基於selenium 動做: go, isAt, doAt 內置對象:pageUrl,_browser,page,$ 參見:adminssll/test/script/LoginSpec
go "https://bixuebihui.com/" println pageUrl assert $("div.title h3").text() == "認證" $("form").with { username = "user1" password = "123" $('input', name:'submit').click() } go '/blog/'
速度,覆蓋率,可重複github
對於Gradle項目
會在項目目錄下生成報測試報告 build/reports/tests/test/index.htmlweb
對於maven項目,測試報告生成: mvn sitespring
以上內容基於2017-7-13鄰里中國技術部的培訓資料瀏覽器