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

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

  • <strong id="5koa6"></strong>
  • 測試數據與代碼分離的測試(2)

    發表于:2014-07-29來源:uml.org.cn作者:不詳點擊數: 標簽:測試數據
    import static org.junit.Assert.assertEquals ; import org.databene.benerator.anno.Source; import org.databene.feed4junit.Feeder; import org.junit.Test; import org.junit.runner.RunWith; import sample.ju

     import static org.junit.Assert.assertEquals ;
     
     import org.databene.benerator.anno.Source;
     import org.databene.feed4junit.Feeder;
     import org.junit.Test;
     import org.junit.runner.RunWith;
     
     import sample.junit.code.*;
     
     @RunWith (Feeder.class )
       public class Feed4junitSample {
             @Test
             @Source( "Data.csv" )//CSV source
             public void testAccessCheck_CSV(String userName, String pw, boolean expected) {
                    assertEquals(expected, UserAccess. accessCheck(userName, pw));
            }
     
            @Test
             @Source( "data.xls" )//Excel source
             public void testAccessCheck_Excel(String userName, String pw, boolean expected) {
                    assertEquals(expected, UserAccess. accessCheck(userName, pw));
            }
     
      } 

      運行結果如下:

      3、數據庫作為數據源

      同樣,Feed4junit也支持數據庫數據源,這里不做詳細的介紹:其原理和上面文件數據源差不多,樣例代碼如下:

      類上聲明@Database:

     import static org.junit.Assert.assertEquals;
     
     import org.databene.benerator.anno.Database;
     import org.databene.benerator.anno.Source;
     import org.databene.feed4junit.Feeder;
     import org.junit.Test;
     import org.junit.runner.RunWith;
     
     import sample.code.UserAccess;
     
     /*
     * Feed4JUnit - Get Data from Database, all test methods can use the database data
     */
     @RunWith(Feeder.class)
     @Database(
                     id = "testdb",
                     url = "jdbc:mysql://localhost:5000/SAMPLE",
                     driver = "com.mysql.jdbc.Driver",
                     user = "admin",
                     password = "admin")
     public class F4JfromDB {
     
            @Test
             @Source(id = "testdb", selector = "select * from TEST")
             public void testAccessCheck(String userName, String pw, String expected) {
                     Boolean bSucess = UserAccess.accessCheck(userName.trim(), pw.trim());
                     assertEquals(expected.trim(), bSucess.toString());
     
            }
     } 

      測試方法上聲明@Database

     @RunWith(Feeder.class)
     public class F4JfromDB_Method {
             @Test
             @Database(
                             id = "testdb",
                             url = "jdbc:mysql://localhost:5000/SAMPLE",
     
                            driver = "com.mysql.jdbc.Driver",
     
                            user = "admin",
                             password = "admin")
             @Source(id = "testdb", selector = "select * from TEST")
             public void testAccessCheck(String userName, String pw, String expected) {
                     Boolean bSucess = UserAccess.accessCheck(userName.trim(), pw.trim());
                     assertEquals(expected.trim(), bSucess.toString());
     
            }
     } 

      測試運行過程中,通過 url,driver 等信息建立數據連接,通過 selector 發出數據請求,最后完成查詢并把數據傳遞給測試方法,數據在傳遞給方法的時候,會按數據表的列的順序與參數進行匹配.

      4、最后

      Feed4JUnit 提供了對數據與代碼分離的測試支持。只需要簡單的注釋,Feed4JUnit 就可以使用戶很方便的實施數據與代碼分離之間的測試,對于習慣了JUnit 測試框架的同學來說,是一個十分省力的利器。

      Feed4JUnit 同時還提供大量數據的隨機測試和等價類測試等眾多功能,這個留到后面再進行挖掘。

    原文轉自:http://www.uml.org.cn/Test/201302225.asp

    老湿亚洲永久精品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>