Your SlideShare is downloading. ×
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单元测试

694

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

×