• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    軟件測試中的一種新單元測試的方法

    發布: 2009-11-03 15:53 | 作者: 網絡轉載 | 來源: 領測軟件測試網 | 查看: 52次 | 進入軟件測試論壇討論

    領測軟件測試網

    Java代碼

      1. public interface APIInterface {
      2. @TestedBy( testClass = "it.javalinux.testedby.APITest", testMethod = "shouldAddTwoAndThree" )
      3.
    public int add(int a, int b);
      4. }
      5.
      6.
    public class APIImplOne {
      7.
    public int add(int a, int b) {
      8.
    return a + b;
      9. }
      10.
      11.
    public class APIImplTwo {
      12.
    public int add(int a, int b) {
      13.
    return a - b;
      14. }
      15.
      16.
    public class APITest {
      17.
      18.
    private APIInterface instance;
      19.
      20. @BeforeTestedBy
      21.
    public beforeTestedBy(APIInterface instance) {
      22.
    this.instance = instance;
      23. }
      24.
      25.
    public void shouldAddTwoAndThree() {
      26. assertThat(instance.add(3,2), is(5));
      27. }
      28.
      29. }

    當然,我使例子盡量簡單,但是TestedBy有更多的注釋,比如當沒有參數的構造函數的簡單反射調用時,被測試類的實例工廠能被指定,這些注釋還遠遠不夠。

    2、在當前工作的類上運行測試

    你寫一個測試類來檢驗代碼的正確性。很多時候,你寫單元測試來保證代碼的改變不會影響正在工作的代碼,或者其他同事正在用的代碼。你如何做呢?你可能改變你的代碼,然后跑所有的涉及到修改的類的測試類。然后,最后你跑所有的測試來保證你沒有影響到其他代碼。

    那么讓你的IDE第一步做什么呢?它編譯你修改的類,并同時運行對應的測試類?既然你或者你的IDE能夠運行測試類,testedBy讓這個成為可能。一個eclipse插件就能做這些工作,針對你修改的類來運行相應的測試類,以驗證沒有破壞你的測試集,不僅僅是在編譯階段,也能在你寫代碼的時候。而且這個也不會太費時,因為插件能夠根據TestedBy的注釋來只運行很少的測試類,即那些已經修改過的類/方法對應的測試類。

    而且,運行測試類,能夠得到一些清楚的報告比如:

    Java代碼

    1. "ClassUnderTest.methodUnderTest shouldThrowExceptionWithNullParameter doen't pass"

    或者更好的:

    Java代碼

    1. "Failure: methodUnderTest in ClassUnderTest doesn't throw exception with null parameter, but it should!"

    當然,你能夠拒絕這種針對類/方法名稱 (如果你想的話)提供的便利,自己從整個工程中去找那些測試類,根據需要自己來測試。

    當然針對所有的類來運行所有的測試類也是可能的,你的測試也能夠在Junit上運行,因為TestedBy是基于Junit測試的。

    一些特點

    讓我列舉在我心中TestedBy的特點吧:

    1、第一個可能是最沒有價值的,但是也是最有用的:在你的IDE中,你能夠導航你的源代碼到對應的測試代碼。這個特性將在eclipse4.4的時候發布,它能夠根據類名稱導航,即使類名處在一個字符串中。當然,這只是一個開始,一個專門的eclipse插件將被開發用來導航代碼,以及被測試代碼的測試代碼樹形結構,針對打開/修改的類(見第3點)執行測試代碼,等等。我不是一個eclipse開發的大師,因此非常歡迎哪位能夠在這方面做出貢獻。

    2、你將在你的java文檔中找到這些注釋,考慮這是一個多好的事情,如果你使用BDD方式開發,定義測試方法形如 shouldNotAcceptNull()或者shouldThrowsExceptionIfEmpty等等。使用BDD方法,事實上你能夠定義和檢查約束,通過使用TestedBy的注釋,在JavaDoc文檔中把這些展示給你的API用戶。

    3、你能夠從被測試類開始運行測試,而不是測試類。我在之前就說過這些了。

    4、通過接口和約束的設計。我已經在上文中專門介紹了這些。

    5、測試類自動生成。一個工具(ant,maven,或者eclipse工具)能用我們的TestedBy注釋來生成測試類。見6點。

    6、Ant /maven 任務/插件來從被測試類運行測試,這個工具將管理并平穩的使用(用來保證測試類和注釋間的同步將很重要):

    A. 反轉引擎:從存在的測試類開始,添加TestedBy注釋到被測試類中。

    B. 從TestedBy注釋中開始運行測試類,來驗證他們能運行所有的測試,并且沒有注釋指向不存在的測試。

    C. 從注釋開始生成(空的)測試類和方法。

    當然,這還不夠,但是,我想這能給你一個想法。我現在正在做這些想法背后的事情,但是我需要在把他們呈現給社區之前把它們設計得更好。

    Conclusions總結

    你對這個方法有興趣嗎?讓我知道你的想法,并且跟你的朋友分享這個帖子…我能從這個帖子得到越多的反饋,我就能更好的做好它。

    現在問題是..目前這個項目的狀態是什么?

    你可以看一下project homepage on javalinuxlabs. googlecode 上面,你可以在svn下面找到一些類。這不是這個工程的第一次實現…它差不多是這個想法的證明。但是,我們需要更努力的工作來讓它更快的派上用場。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    22/2<12

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>