Your SlideShare is downloading. ×
0
Java单元测试
Java单元测试
Java单元测试
Java单元测试
Java单元测试
Java单元测试
Java单元测试
Java单元测试
Java单元测试
Java单元测试
Java单元测试
Java单元测试
Java单元测试
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Java单元测试

711

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
711
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. JAVA 单元测试 JUnit vs TestNG
  • 2. 来源 1 来源 2
  • 3. Junit <ul><li>JUnit是由 Erich Gamma 和 Kent Beck 编写的一个回归测试框架。Junit测试是程序员测试,即所谓白盒测试。 </li></ul><ul><li>项目主页:http://www.junit.org/ </li></ul>
  • 4. JUnit3 vs JUnit4 <ul><li>1.extend TestCase vs POJO </li></ul><ul><li>2.@OverWrite TestCase. setUp,tearDown vs @BeforeClass @AfterClass / @Before @After </li></ul><ul><li>3. testXXX vs @Test </li></ul><ul><li>4.Exception </li></ul><ul><li>5. @Ignore </li></ul><ul><li>6. timeout </li></ul><ul><li>7. @Parameter </li></ul><ul><li>8. @Suite </li></ul><ul><li>引用来源 </li></ul>
  • 5. @Test <ul><li>public class JUnitBasicTest { </li></ul><ul><li>private static AClass aClass; </li></ul><ul><li>@BeforeClass </li></ul><ul><li>public static void init() throws Exception { </li></ul><ul><li>aClass = new AClass(); </li></ul><ul><li>} </li></ul><ul><li>@AfterClass </li></ul><ul><li>public static void clear() throws Exception { </li></ul><ul><li>aClass = null; </li></ul><ul><li>} </li></ul><ul><li>@Before </li></ul><ul><li>public void before() throws Exception { </li></ul><ul><li>System.out.println(&quot;@Before&quot;); </li></ul><ul><li>} </li></ul><ul><li>@After </li></ul><ul><li>public void after() throws Exception { </li></ul><ul><li>System.out.println(&quot;@After&quot;); </li></ul><ul><li>} </li></ul><ul><li>@Test </li></ul><ul><li>public void isMe() { </li></ul><ul><li>assertTrue(&quot;should be me!&quot;, aClass.isMe(&quot;yaomj&quot;)); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>执行顺序 @BeforeClass @Before isMe() @After @AfterClass
  • 6. Exception <ul><li>public void testExceptionIn JUint3 () { </li></ul><ul><li>ArrayList emptyList = new ArrayList(); </li></ul><ul><li>try{ </li></ul><ul><li>Object o = emptyList.get(0); </li></ul><ul><li>fail(&quot;Should raise an IndexOutOfBoundsException&quot; ); </li></ul><ul><li>} catch (IndexOutOfBoundsException expected) { </li></ul><ul><li>assertTrue(true ); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul><ul><li>@Test(expected = IndexOutOfBoundsException.class ) </li></ul><ul><li>public void exceptionIn JUint4 () { </li></ul><ul><li>ArrayList emptyList = new ArrayList(); </li></ul><ul><li>Object o = emptyList.get(0); </li></ul><ul><li>} </li></ul>
  • 7. @Ignore <ul><li>@Ignore(&quot; 革命尚未成功,同志仍需努力! &quot;) </li></ul><ul><li>@Test </li></ul><ul><li>public void notCompleteMethod() throws Exception { </li></ul><ul><li>//TODO </li></ul><ul><li>} </li></ul><ul><li>对于你想暂时不进行测试的方法 , 在该方法前添加 @Ignore </li></ul>
  • 8. timeout <ul><li>@Test ,使用 &quot;timeout&quot; 参数。如果测试运行的时间超过指定的毫秒数,则测试失败。 </li></ul><ul><li>@Test(timeout = 1000) </li></ul><ul><li>public void doSomeTimeConsumingWork() { </li></ul><ul><li>while (true){ </li></ul><ul><li>// 愚公移山 ing... </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  • 9. TestNG <ul><li>作者 Cédric Beust </li></ul><ul><li>主页 :http://testng.org/doc/index.html </li></ul><ul><li>TestNG 从 JUnit3 获得灵感 , 并增加一些新特性 ( 青 出于 蓝 ) </li></ul><ul><li>1. 注解 (JUnit4 借鉴 TestNG 的这个特性 ) </li></ul><ul><li>2. 多线程支持 </li></ul><ul><li>3. 灵活的测试配置 </li></ul><ul><li>4. 数据驱动测试 (@DataProvider) </li></ul><ul><li>5. 参数化 </li></ul><ul><li>6. 更强大的执行模式 (no more TestSuite) </li></ul><ul><li>7. IDE plugins (Eclipse, IDEA, Maven, etc...) </li></ul><ul><li>8. 方法依赖测试 </li></ul><ul><li>eclipse plugin:http://beust.com/eclipse-old/ </li></ul>
  • 10. @Test <ul><li>alwaysRun 如果设置为 true ,这个测试方法将总是运行,甚至当它依赖的方法失败时。 </li></ul><ul><li>dataProvider 这个测试方法的 data provider 的名称 </li></ul><ul><li>dataProviderClass 用于查找 data provider 的类。如果不指定,将在当前测试方法所在的类或者它的基类上查找 data provider 。 如果这个属性被指定 , 则 data provider 方法需要是指定类的 static 方法。 </li></ul><ul><li>dependsOnGroups 当前方法依赖的组列表 </li></ul><ul><li>dependsOnMethods 当前方法依赖的方法列表 </li></ul><ul><li>description 当前方法的描述 </li></ul><ul><li>enabled 当前类的方法 / 方法是否被激活 </li></ul><ul><li>expectedExceptions 测试方法期望抛出的异常列表。如果没有异常或者抛出的不是列表中的任何一个,当前方法都将标记为失败 . </li></ul><ul><li>groups 当前类 / 方法所属的组列表 </li></ul><ul><li>invocationCount 当前方法被调用的次数 </li></ul><ul><li>successPercentage 当前方法期望的成功率 </li></ul><ul><li>sequential 如果设置为 true ,当前测试类上的所有方法保证按照顺序运行。甚至测试们在 parallel=&quot;true&quot; 的情况下 . 这个属性只能用于类级别,如果用于方法级别将被忽略。 </li></ul><ul><li>timeOut 当前方法容许花费的最大时间,单位毫秒。 </li></ul><ul><li>threadPoolSize 当前方法的线程池大小。方法将被多线程调用,次数 </li></ul><ul><li>invocationCount 参数指定 注意:如果 invocationCount 没有指定则这个属性将被忽略 </li></ul>
  • 11. Group( 分组 ) <ul><li>1. 类 / 方法 分组 @Test(groups = { &quot;group1&quot; }) </li></ul><ul><li>2.Groups of groups( 组中组 ) </li></ul><ul><li>3. 包含组 (include) 排除组 (exclude) </li></ul>
  • 12. Parameters( 参数 ) <ul><li>1.Parameters from testng.xml </li></ul><ul><li>@Parameters 可使用在任何有 @Test, @Before/After 或者 @Factory 注解的方法上 </li></ul><ul><li>2.Parameters with DataProviders </li></ul><ul><li>@Test(dataProvider = &quot;xxx&quot;,dataProviderClass = xxx.class) </li></ul>
  • 13. Make Pesentation much more fun keep the bar green to keep the code clean! Thank you! :)

×