轉載:http://www.cnblogs.com/changzhz/p/5158068.html
單元測試是開發中必不可少的一部分,是產品代碼的重要保證。
Junit和testNG是當前最流行的測試框架,Junit是使用最廣泛的測試框架,有興趣的話自己baidu一下。
testNG基於Junit和Nunit,並引入了很多特性,使其更強大和更易於使用。
有興趣的可以直接看一下官網:http://testng.org/doc/index.html
用maven可以很方便的構建測試框架。
在這里以maven為例搭建一個測試框架
編輯pom.xml引入必要的jar包
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <powermock.version>1.6.3</powermock.version> <cobertura.version>2.1.1</cobertura.version> <sonar.version>5.1</sonar.version> <junit.version>4.12</junit.version> </properties> <dependencies> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-testng</artifactId> <version>${powermock.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito</artifactId> <version>${powermock.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>net.sourceforge.cobertura</groupId> <artifactId>cobertura</artifactId> <version>${cobertura.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.codehaus.sonar</groupId> <artifactId>sonar-plugin-api</artifactId> <version>${sonar.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>${powermock.version}</version> <scope>test</scope> </dependency> </dependencies>
基本的框架已經搭建,下面寫一個最簡單的測試類
很多例子取自<<PowerMock實戰手冊>><<Instant Mock Testing with PowerMock>>
http://wenku.baidu.com/link?url=hKW9B15IRoqIrjpWKYDeR_cGL9hRgYvbT7-rbds59i19l70qzGeW7x3Tzr24Vwuq-vWHggOq6XOs_saW33Li7E492UlXWM8JIpyKMyhvhwa
待測試類:
public class EmployeeService { public String hello(){ return "Hello word!"; } }
測試類:
public class EmployeeServiceTest { @Test public void hello(){ Assert.assertEquals(employeeService.hello(), "Hello word!"); } }
這是一個不能再簡單的例子了,如果IDE有testNG插件的話,直接右鍵EmployeeServiceTest→run as→testNG test就可以運行。
結果如下:
[TestNG] Running: C:\Users\changzhz\AppData\Local\Temp\testng-eclipse--447685701\testng-customsuite.xml PASSED: hello =============================================== Default test Tests run: 1, Failures: 0, Skips: 0 =============================================== =============================================== Default suite Total tests run: 1, Failures: 0, Skips: 0 =============================================== [TestNG] Time taken by org.testng.reporters.SuiteHTMLReporter@5f205aa: 344 ms [TestNG] Time taken by org.testng.reporters.JUnitReportReporter@424c0bc4: 47 ms [TestNG] Time taken by org.testng.reporters.jq.Main@2ff5659e: 196 ms [TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 0 ms [TestNG] Time taken by org.testng.reporters.EmailableReporter2@1996cd68: 4 ms [TestNG] Time taken by org.testng.reporters.XMLReporter@27ddd392: 13 ms
或者用maven運行 :mvn clean test
用maven調用時,請確保測試類以Test或testCase結尾
這個例子太簡單了,只是簡單說明怎么構架,怎么運行。