精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

進(jìn)行Struts應(yīng)用程序單元測試開發(fā)

開發(fā) 后端
在Struts測試驅(qū)動(dòng)開發(fā)在減少開發(fā)努力的同時(shí)也改進(jìn)了軟件的開發(fā)質(zhì)量。單元測試,作為一整套測試策略的基礎(chǔ),必須是全面的,且要求易于建立和執(zhí)行迅速。

一、引言

測試驅(qū)動(dòng)開發(fā)在減少開發(fā)努力的同時(shí)也改進(jìn)了軟件的開發(fā)質(zhì)量。單元測試,作為一整套測試策略的基礎(chǔ),必須是全面的,且要求易于建立和執(zhí)行迅速。然而,對執(zhí)行環(huán)境和被測試類外部代碼的依賴性使我們實(shí)現(xiàn)這些目標(biāo)變得更為復(fù)雜。例如,把應(yīng)用程序發(fā)布到容器將顯著地延長代碼和測試的周期;而對其它類的依賴性通常也會(huì)導(dǎo)致測試的建立更加復(fù)雜和測試運(yùn)行速度更為緩慢。
       

集成兩個(gè)流行的測試框架(StrutsTestCase和EasyMock)來單元測試Struts應(yīng)用程序?qū)?huì)更為容易地建立測試并加快測試速度。然而,這兩個(gè)框架之間尚存在一些“隔閡”,從而很難把它們理想地集成到一起。在本文中,我將通過分析兩種方案(一個(gè)面向?qū)ο蟮姆桨负鸵粋€(gè)面向方面的方案)來探討這個(gè)問題。同時(shí),我還將展示面向方面編程(AOP)是如何通過簡化一些看起來很困難的問題的解決方案而進(jìn)一步補(bǔ)充面向?qū)ο缶幊?OOP)的。
   

二、集成需要
       

一個(gè)典型的Struts應(yīng)用程序既能夠展示也其所使用的執(zhí)行環(huán)境也會(huì)體現(xiàn)出類之間的依賴性問題;這是因?yàn)镾truts行為(Action)是在一個(gè)servlet容器內(nèi)執(zhí)行的,并且典型情況下會(huì)調(diào)用其它的類來處理請求。模擬對象測試方法有助于消除其中不必要的依賴性。借助于繼承自基本JUnit測試集的MockStrutsTestCase類,StrutsTestCase測試框架提供了對servlet容器的一種模擬實(shí)現(xiàn)。這顯然方便了容器外測試,因而也相應(yīng)地加快了單元測試周期。另一方面,另一個(gè)測試框架—EasyMock—進(jìn)一步便利了對協(xié)作類的動(dòng)態(tài)模擬(Mock)。這個(gè)框架中所提供的模擬能夠用更簡單的實(shí)現(xiàn)來代替真正的類,并且添加了校驗(yàn)邏輯以支持單元測試。
       

非常清楚,把這兩個(gè)框架結(jié)合在一起是非常有益的—Struts應(yīng)用程序便可以在非常真實(shí)的隔離環(huán)境下進(jìn)行測試。理想情況下,你需要使用下列步驟來實(shí)現(xiàn)這樣的一個(gè)單元測試:
   

1.建立MockStrutsTestCase以便模擬servlet容器。
   

2.借助于EasyMock來模擬行為所依賴的類。
   

3.設(shè)置模擬的期望值。
   

4.把模擬注入到當(dāng)前測試的行為中。
   

5.繼續(xù)進(jìn)行測試和校驗(yàn)。
       

注意,上面步驟4中所執(zhí)行的依賴性注入使被測試的Struts行為遠(yuǎn)離了其真實(shí)的協(xié)作者而與一個(gè)模擬的行為進(jìn)行交互。為了把通過EasyMock生成的模擬注入到行為中,你需要從測試類內(nèi)部存取這些行為相應(yīng)的實(shí)例。遺憾的是,這里出現(xiàn)了一種障礙,因?yàn)槲覀儫o法輕易地從MockStrutsTestCase中實(shí)現(xiàn)這樣的存取。
   

三、OOP方案
       

那么,你該如何從MockStrutsTestCase中存取行為實(shí)例呢?首先,讓我們來分析一下MockStrutsTestCase和Struts的控制器組件之間的關(guān)系。
       

圖1中展示的關(guān)鍵關(guān)系有可能潛在地導(dǎo)致一種解決上面問題的方案。
     

 struts   
       

圖1:此處展示的關(guān)系能夠建立一種OOP方案
       

 .MockStrutsTestCase中提供了一個(gè)public類型的getter方法用于檢索ActionServlet。
       

.ActionServlet有一個(gè)protected類型的getter方法用于實(shí)現(xiàn)RequestProcessor。
       

.RequestProcessor把行為實(shí)例存儲為一個(gè)protected類型的成員。
       

你是否可以子類化ActionServlet和RequestProcessor從而使MockStrutsTestCase能夠存取行為呢?相應(yīng)的結(jié)果調(diào)用鏈看上去應(yīng)該如下所示:

struts"" 

       

注意,在你分析完把MockStrutsTestCase鏈接到Struts行為的調(diào)用序列圖之后,你就會(huì)發(fā)現(xiàn)此方法是行不通的。
       

圖2展示了存在于MockStrutsTestCase和Struts組件之間的關(guān)鍵性交互。
       
   

  struts""   

圖2:存在于MockStrutsTestCase和Struts組件之間的交互
       

圖2展示的問題涉及到Struts行為創(chuàng)建的時(shí)序問題。到行為內(nèi)部的模擬注入必須在調(diào)用MockStrutsTestCase.actionPerform()之前發(fā)生。然而,此時(shí)這些行為還不可用,因?yàn)橹挥性谡{(diào)用actionPerform()后,Requ

estProcessor才能夠創(chuàng)建這些行為實(shí)例。
       

既然你不能很容易地把行為實(shí)例傳播到MockStrutsTestCase中,那么,為什么不子類化RequestProcessor并重載processActionCreate()方法呢?在這個(gè)重載方法中,你可以存取所有的行為實(shí)例;這樣以來,創(chuàng)建、配置和設(shè)置對相應(yīng)行為實(shí)例的一個(gè)模擬一下子變得非常直接。因?yàn)閼?yīng)該在執(zhí)行完actionPerform()之后調(diào)用MockControl.verify()方法,所以,你還需要重載processActionPerform()以進(jìn)行此校驗(yàn)調(diào)用。
       

這種方案對于測試正規(guī)的Struts應(yīng)用程序是不太適合的。因?yàn)榧词顾械男袨閮H與單個(gè)模擬進(jìn)行交互,測試一個(gè)行為也有可能要求多個(gè)測試方法—每個(gè)方法都具有不同的模擬期望。為此,我們建議的方案是:創(chuàng)建不同的RequestProcessor子類,相應(yīng)于每個(gè)子類設(shè)置不同的模擬期望。另外,還需要多個(gè)Struts配置文件來指定不同的RequestProcessor子類。最終,管理大量的測試將成為一件令人頭疼的事情。

 

#p#

四、AOP方案
       

因此,我們非常希望,在執(zhí)行某行為之前能夠通過某種方式實(shí)現(xiàn)在MockStrutsTestCase中使用該行為的實(shí)例。如果你熟悉AOP,那么,你會(huì)立即意識到它所提供的簡單方案即能直接滿足這一要求。注意:這里的關(guān)鍵是定義一個(gè)切點(diǎn),由它負(fù)責(zé)捕獲行為執(zhí)行連接點(diǎn);然后通過一個(gè)before advice把模擬注入到相應(yīng)的行為中。
       

在此,我選擇使用AspectJ框架來實(shí)現(xiàn)這一方案。當(dāng)然,其它的例如Spring AOP這樣的AOP實(shí)現(xiàn)也應(yīng)該能夠良好工作。不過,Spring AOP還需要一個(gè)額外的步驟—通過Spring框架中的DelegatingActionProxy類把對Struts行為的管理委托給Spring。
       

圖3展示了基于AOP方案的單元測試示例靜態(tài)模型。
     

struts""    
      

圖3:基于AOP方案的單元測試示例靜態(tài)模型
       

 SimpleAction是一個(gè)Struts行為的子類,同時(shí)與ActionService進(jìn)行協(xié)作。其中,SimpleActionTest派生于MockStrutsTestCase,用來測試SimpleAction。
       

SimpleActionTest使用EasyMock創(chuàng)建和建立一個(gè)模擬ActionService。SimpleActionTest還實(shí)現(xiàn)StrutsActionPreExecuteListener接口以便在即將運(yùn)行        SimpleAction的execute方法時(shí)接收通知。作為通知的一部分,SimpleActionTest接收SimpleAction實(shí)例以便注入ActionService模擬。由方面類StrutsActionPreExecuteNotifier負(fù)責(zé)通知任何實(shí)現(xiàn)監(jiān)聽器接口的測試類,并且使相應(yīng)的行為實(shí)例可用。
       

下面的步驟描述了實(shí)現(xiàn)StrutsActionPreExecuteNotifier的過程:
       

 ◆首先,由一個(gè)切點(diǎn)選擇相應(yīng)的測試方法執(zhí)行連接點(diǎn)。另一方面,這個(gè)測試方法駐留于負(fù)責(zé)監(jiān)聽該行為的預(yù)執(zhí)行事件的測試類中。另外,這個(gè)切點(diǎn)還會(huì)暴露當(dāng)前執(zhí)行的測試類對象: pointcut mockStrutsTest(StrutsActionPreExecuteListener actionTest):
  
        

struts"" 
       

◆然后,由第二個(gè)切點(diǎn)負(fù)責(zé)捕獲上面的行為執(zhí)行連接點(diǎn)。通過結(jié)合第一個(gè)切點(diǎn),匹配范圍被限制到該行為相應(yīng)的測試方法的調(diào)用流程的內(nèi)部。這種進(jìn)一步縮小的范圍對行為執(zhí)行(并非通過測試方法激活)起到過濾作用。最終,方面根本不會(huì)影響到最后生成的代碼。該行為及其相應(yīng)的測試類實(shí)例都是經(jīng)由切點(diǎn)參數(shù)加以暴露的: pointcut strutsActionExecute(Action action, StrutsActionPreExecuteListener actionTest):
  
       

struts"" 
       

◆最后,由一個(gè)與前一個(gè)切點(diǎn)相關(guān)聯(lián)的before advice負(fù)責(zé)通知測試類(它們擔(dān)任行為事件的監(jiān)聽器)并且傳遞相應(yīng)于模擬注入的行為實(shí)例:
       
 

struts"" 
       

圖4展示了這些類之間的動(dòng)態(tài)交互情形。
       
    

 struts""   

 圖4:類之間的動(dòng)態(tài)交互
       

注意,圖中從行為到方面的虛線描述了對行為執(zhí)行連接點(diǎn)的捕獲情況。此時(shí)序圖與第一個(gè)時(shí)序圖比較,其重要區(qū)別正在于行為執(zhí)行之前發(fā)生的三個(gè)步驟:
       

1.一個(gè)切點(diǎn)捕獲行為執(zhí)行連接點(diǎn)(由從SimpleAction指向StrutsActionPreExecuteNotifier的虛線箭頭指出)。
       

2.方面的before advice負(fù)責(zé)通知測試類并且把相應(yīng)的行為實(shí)例傳遞給它。
       

3.測試類把模擬對象注入到即將要開始執(zhí)行的行為實(shí)例中。

#p#

現(xiàn)在,你可以基于前面概括的五個(gè)步驟繼續(xù)編寫行為測試。下面的代碼展示了相應(yīng)于SimpleActionTest的部分代碼,步驟已在注釋中標(biāo)出。
       

使用MockStrutsTestCase和EasyMock進(jìn)行行為測試的部分代碼:
       
       

struts"" 

struts"" 

在行動(dòng)及其依賴的服務(wù)之間存在四種可能的復(fù)合關(guān)系:

每個(gè)行為依賴于一個(gè)服務(wù)。

每個(gè)行為依賴于多個(gè)服務(wù)。 

多個(gè)行為依賴于一個(gè)服務(wù)。 

多個(gè)行為依賴于多個(gè)服務(wù)。 

我在此展示的方案能夠比較靈活而且相對容易地支持上面所有這四種情形,因?yàn)槟M創(chuàng)建、期望值建立以及模擬注入都能夠在單個(gè)的測試類內(nèi)實(shí)現(xiàn)。

你能夠不借助于監(jiān)聽器接口就可以在StrutsActionPreExecuteNotifier內(nèi)部模擬注入嗎?這看起來似乎使得測試類實(shí)現(xiàn)更簡單一些。然而,實(shí)踐證明,類似早些時(shí)候討論的OOP方案,編寫多個(gè)方面以創(chuàng)建不同的模擬對象并建立相應(yīng)的不同的模擬期望是非常必要的。另外,在單個(gè)測試類內(nèi)本地化模擬的創(chuàng)建與安裝(借助于監(jiān)聽技術(shù),這是可能的)將變得更為方便。

五、總結(jié)

對于我們在本文中所討論的集成問題,有人可能會(huì)創(chuàng)造出一套相當(dāng)不錯(cuò)的OOP方案。然而,構(gòu)造這種方案很可能需要對Struts和StrutsTestCase有深入的理解才行,并且要付出相當(dāng)?shù)呐ΑS绊懕疚闹兴懻摰膬蓚€(gè)測試框架(StrutsTestCase和EasyMock)緊密集成的主要障礙在于,在Struts行為實(shí)例執(zhí)行之前很難實(shí)現(xiàn)對它的訪問。在認(rèn)識了導(dǎo)致這種障礙的基本原因之后,AOP方案自然地出現(xiàn)在我們面前。不必再強(qiáng)求于基于傳統(tǒng)型OOP的那種更復(fù)雜的方案,AOP允許我們把我們的方案更為緊密地映射到問題空間。

其實(shí),AOP的真正“魔術(shù)”在于它的連接點(diǎn)模型,它能夠使你“穿越”中間對象(例如ActionServlet和RequestProcessor)進(jìn)而直指問題的核心。借助于AOP技術(shù)中確定橫切關(guān)注點(diǎn)這種非常“節(jié)儉”的方法,開發(fā)者即能夠設(shè)計(jì)出非常直觀而且更為簡單的解決方案。AOP,這種強(qiáng)有力的編程方法正好彌補(bǔ)了傳統(tǒng)型OOP編程中所存在的不足。如果被恰當(dāng)用于解決適當(dāng)類型的問題,那么,AOP有助于改進(jìn)代碼的模塊化,最終會(huì)產(chǎn)生出更為清晰和更易于理解的代碼。最后,非常希望本文不僅有助于你的Struts應(yīng)用程序的單元測試,而且還吸引你進(jìn)一步探討AOP編程所體現(xiàn)出來的其它重要優(yōu)點(diǎn)。

您正在閱讀的是《進(jìn)行Struts應(yīng)用程序單元測試開發(fā)

【編輯推薦】

  1. 在Eclipse中開發(fā)struts應(yīng)用程序
  2. 手把手教你在Eclipse中配置開發(fā)Struts
  3. Eclipse下開發(fā)struts完整解決亂碼問題
責(zé)任編輯:張燕妮 來源: IT168
相關(guān)推薦

2017-01-16 12:12:29

單元測試JUnit

2017-01-14 23:26:17

單元測試JUnit測試

2013-06-04 09:49:04

Spring單元測試軟件測試

2023-12-11 08:25:15

Java框架Android

2017-03-23 16:02:10

Mock技術(shù)單元測試

2011-08-11 13:02:43

Struts2Junit

2011-07-27 13:39:28

iOS GH-Unit 單元測試

2017-01-14 23:42:49

單元測試框架軟件測試

2021-03-28 23:03:50

Python程序員編碼

2022-04-08 09:01:56

腳本Go應(yīng)用單元

2009-06-01 09:13:52

ASP.NET MVCMVC應(yīng)用ASP.NET MVC

2009-08-19 09:00:48

單元測試框架自動(dòng)化測試

2021-03-24 09:30:02

Jupyter not單元測試代碼

2012-11-01 11:32:23

IBMdw

2012-11-01 11:37:05

JavaScript單元測試測試工具

2023-08-02 13:59:00

GoogleTestCTest單元測試

2022-06-30 09:20:32

單元測試測試

2023-08-11 07:59:15

2023-10-07 08:49:56

測試驅(qū)動(dòng)開發(fā)Xunit 框架

2011-06-20 16:41:59

單元測試
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

日韩精品福利| 成人一区二区视频| 亚洲精品**中文毛片| 亚洲国产裸拍裸体视频在线观看乱了中文| 在线精品亚洲一区二区不卡| 午夜精品一区二区三区av| 午夜剧场高清版免费观看| 久久夜色精品国产噜噜亚洲av| 狂野欧美xxxx韩国少妇| 国产精品久久久久久久第一福利| 国产91久久婷婷一区二区| 成人av播放| 国产免费xxx| 最近中文字幕在线免费观看| 亚洲最好看的视频| 欧美日韩国产专区| 精品一区久久久久久| 久久久久久久久久99| 警花av一区二区三区| 精品久久久中文| 韩国成人av| 国产精品19p| 成人在线一级片| 福利在线导航136| 成人免费高清在线| 国产精品美女主播| 四虎影视1304t| 成人国产一区| 国产精品久久久久久久久搜平片| 国产精品精品软件视频| 久久久香蕉视频| 久久国产电影| 91精品国产综合久久福利软件 | 色网站在线播放| 久久午夜影院| 色婷婷综合久色| 亚洲精品9999| 国产三级在线观看视频| 黄色亚洲在线| 亚洲美女动态图120秒| 热久久精品免费视频| 永久免费在线观看视频| 国产一区二区三区日韩| 欧美精品久久久久久久久| 香港三日本8a三级少妇三级99| 不卡一二三区| 国产精品国产三级国产普通话蜜臀 | 精品一区二区三区四| 亚洲国产精品日韩专区av有中文 | 亚洲大片免费看| 久久国产一区| 在线免费a视频| 欧美va天堂在线| 亚洲国产精品一区二区三区| 国产激情在线观看视频| 久操视频在线免费播放| 成人午夜电影久久影院| 99超碰麻豆| www.久久久久久| 久久精品30| 久久成人国产精品| 黄色a一级视频| 欧洲亚洲精品久久久久| 精品成人国产在线观看男人呻吟| 久久在线中文字幕| 天堂аⅴ在线地址8| 国产精品九色蝌蚪自拍| 欧美精品久久96人妻无码| 成人日韩欧美| 国产午夜亚洲精品午夜鲁丝片 | 一区二区在线免费播放| 日韩欧美国产一区二区| 吴梦梦av在线| 男操女在线观看| 国产精品538一区二区在线| 热re91久久精品国99热蜜臀| 加勒比婷婷色综合久久| 亚洲三级网页| 中文一区二区视频| 少妇精品无码一区二区三区| 亚洲警察之高压线| 一区二区三区高清国产| a视频免费观看| 国产一区二区三区四区五区传媒| 欧美α欧美αv大片| 奇米视频888| 精品一区二区三区免费看| 亚洲白虎美女被爆操| 午夜精品久久久久久久99热影院| 亚洲精品一区国产| 精品视频在线播放免| 亚洲av无码成人精品区| 2020国产精品小视频| 欧美午夜宅男影院| 麻豆av免费在线| 色婷婷成人网| 精品国产电影一区二区| 特级西西www444人体聚色| 色天下一区二区三区| 欧美xxxxxxxx| 久久丫精品忘忧草西安产品| 综合色一区二区| 精品国产一区二区三区在线观看 | 精品无码一区二区三区在线| 中中文字幕av在线| 亚洲人一二三区| 一级二级三级欧美| 69视频在线观看| 日本一区二区免费在线观看视频 | 国产精品视频一区国模私拍| 亚洲精品国偷拍自产在线观看蜜桃| 久久国产福利国产秒拍| 国产精品一二三在线| 最新中文字幕免费| 丁香六月久久综合狠狠色| 亚洲美女搞黄| 中文字幕资源网在线观看免费| 在线不卡一区二区| 最新av免费在线观看| 日本免费成人| 亚洲美女黄色片| 国产精品a成v人在线播放| 影音先锋亚洲精品| 欧美亚洲另类在线| 精品国产xxx| 丁香激情综合五月| 中日韩在线视频| 四虎影视国产在线视频| 亚洲www啪成人一区二区麻豆| 国产 日韩 亚洲 欧美| 一区在线不卡| 色久欧美在线视频观看| 99久久婷婷国产综合| 日韩av午夜在线观看| 成人精品一区二区三区电影免费 | 91视频免费网址| 日韩精品电影在线| 成人性生交大片免费看小说| 国产永久免费高清在线观看视频| 国产精品美女久久久久aⅴ| 国产一区一区三区| 国产a亚洲精品| 亚洲人av在线影院| 操她视频在线观看| 日本亚洲视频在线| 日韩中文一区二区三区| av在线看片| 8x8x8国产精品| 2一3sex性hd| 影音先锋国产精品| 国产精品一区二区三区精品| 欧美6一10sex性hd| 欧美在线色视频| av黄色在线免费观看| 三级久久三级久久| 亚洲国产精品毛片| 欧美午夜三级| 亚洲国产日韩一区| 日本少妇全体裸体洗澡| 日本va欧美va精品发布| 少妇精品久久久久久久久久| 免费毛片在线看片免费丝瓜视频 | 国产chinesehd精品露脸| 亚洲一区二区日韩| 99re国产视频| 阿v视频在线| 欧美一区午夜精品| 黄色一级片在线| 男人的天堂亚洲一区| 国产女主播一区二区三区| 一级日本在线| 欧美一区中文字幕| 国产精品1234区| 久久婷婷综合激情| 国产九色porny| 乱亲女h秽乱长久久久| 国产不卡av在线| 天天摸天天干天天操| 亚洲三级电影全部在线观看高清| 无套内谢丰满少妇中文字幕 | 成人在线中文| 久久视频在线直播| 日本美女一级片| 亚洲欧美一区二区三区极速播放| 国产精品99精品无码视亚| 一二三区精品| 国产伦精品一区二区三区在线| 亚洲欧洲美洲av| 久久久精品一区二区三区| 欧美一级视频免费| 欧美色男人天堂| 手机免费看av| 国产美女一区二区三区| 中文字幕无码精品亚洲35| 精品国产美女a久久9999| 美女视频久久黄| 99久久久无码国产精品免费| 香蕉影视欧美成人| 手机看片国产日韩| 日本欧美大码aⅴ在线播放| 超碰在线免费观看97| 久久久伦理片| 91久久精品日日躁夜夜躁国产| av资源种子在线观看| 欧美影院一区二区| 久久艹精品视频| 中文字幕不卡的av| 一个色综合久久| 亚洲欧洲日本一区二区三区| 人人妻人人澡人人爽精品欧美一区| 九色丨蝌蚪丨成人| 亚洲va欧美va在线观看| 国产不卡在线| 亚洲欧美中文在线视频| 黑人乱码一区二区三区av| 亚洲影视资源网| 国产十八熟妇av成人一区| 久久精品国产99久久6| 中文字幕色一区二区| 欧美爱爱网站| 国产不卡av在线| 国产精品13p| 欧美国产日韩二区| 日本黄色免费视频| 欧美一级日韩免费不卡| 免费精品在线视频| 国内成人免费视频| 国产精品一色哟哟| 亚洲一级毛片| 艳母动漫在线观看| 99久久婷婷国产综合精品电影√| 91免费综合在线| jizz欧美| 国产精品精品视频一区二区三区| 巨大荫蒂视频欧美大片| 国产亚洲视频中文字幕视频| 亚洲天堂网在线视频| 日本精品一级二级| 极品颜值美女露脸啪啪| 99国产精品久久久久久久久久| 亚洲综合在线网站| 婷婷综合伊人| 日本三日本三级少妇三级66| 国产精品毛片一区二区在线看| 亚洲午夜精品久久| 久久国产综合| 国产精品一区二区不卡视频| 日本成人精品| 日韩av快播网址| 黑人巨大精品欧美一区二区桃花岛| 2019精品视频| 国产原厂视频在线观看| 久久伊人色综合| av在线app| 欧美成人剧情片在线观看| 欧美xxxx视频| 午夜免费久久久久| 刘亦菲一区二区三区免费看| 国产精品91视频| 2020国产精品小视频| 91视频免费进入| 日韩网站中文字幕| 久久人人爽国产| 男人天堂久久久| 亚洲国产一区二区三区四区| 图片区 小说区 区 亚洲五月| 7777精品伊人久久久大香线蕉的 | 最近免费中文字幕视频2019| 中文字幕在线免费| 免费91麻豆精品国产自产在线观看 | 91在线你懂得| 自拍偷拍你懂的| 怡红院av一区二区三区| 公肉吊粗大爽色翁浪妇视频| 国产精品久久久久久久裸模| 91人妻一区二区三区蜜臀| 国产欧美日产一区| 欧美手机在线观看| 五月天中文字幕一区二区| 久久久久久久亚洲| 一本色道综合亚洲| 中文字幕乱码中文字幕| 欧美性生交大片免费| 亚洲天堂视频网| 亚洲国产精品久久久久秋霞不卡 | 国产精品自产拍| 欧美伊人久久久久久久久影院| 96日本xxxxxⅹxxx17| 在线视频国内自拍亚洲视频| 国产精品久久久久久免费免熟| 欧美精品一区二区三区蜜桃| 国产一级二级三级在线观看| 蜜臀久久99精品久久久无需会员| 亚洲精品国产精品国产| 5566av亚洲| 精品黄色一级片| 日本黑人久久| 欧美军人男男激情gay| 久久视频免费在线| 综合一区二区三区| 亚洲自偷自拍熟女另类| 精品一二线国产| 人妻体内射精一区二区| 久久久欧美精品sm网站| 亚洲激情视频小说| 亚洲免费观看高清完整版在线观看| 国产成人自拍网站| 91福利在线导航| 精品一区二区久久久久久久网站| 欧洲不卡av| 欧美一区二区三区免费视| 视频精品一区二区三区| 亚洲国产精品毛片| 亚洲欧美日本视频在线观看| 男人添女人下面高潮视频| 精品亚洲porn| 亚洲精品91在线| 欧美三级欧美成人高清www| 国产高中女学生第一次| 亚洲国产黄色片| 三级无遮挡在线观看| 欧美日韩aaaa| 欧美激情护士| 国产精品成人品| 黄色成人美女网站| 国产精品久久国产| 国产精品主播| 在线观看高清免费视频| 国产毛片一区二区| 色哟哟无码精品一区二区三区| aaa欧美色吧激情视频| 男生草女生视频| 第一福利永久视频精品| 黄色美女一级片| 久久99视频免费| 欧美电影院免费观看| www.黄色网址.com| 久久激情综合网| 在线观看天堂av| 欧美高清精品3d| 老司机精品视频在线观看6| 成人午夜黄色影院| 99精品全国免费观看视频软件| 日本 片 成人 在线| 成人av网址在线观看| 人妻aⅴ无码一区二区三区| 日韩欧美中文字幕在线观看| 色中色在线视频| 国产成人精品日本亚洲| 国产中文精品久高清在线不| 日本新janpanese乱熟| 欧美国产成人精品| 91禁在线观看| 欧美成人激情图片网| 91综合精品国产丝袜长腿久久| 日韩欧美亚洲精品| 蜜臀av亚洲一区中文字幕| 久久久久人妻一区精品色| 7777精品伊人久久久大香线蕉超级流畅| 美女黄视频在线观看| 亚洲一区二区三区sesese| 红桃视频国产精品| 97人妻天天摸天天爽天天| 日本道免费精品一区二区三区| 高清av在线| 4k岛国日韩精品**专区| 美日韩中文字幕| 成人免费观看cn| 26uuu精品一区二区| 免费成年人视频在线观看| 日韩免费成人网| 麻豆传媒视频在线观看| 亚洲自拍在线观看| 亚洲高清不卡| 欧美亚洲色综久久精品国产| 欧美日韩美女视频| 成人在线播放视频| 97人人模人人爽人人少妇| 亚洲激情精品| 国产伦精品一区二区三区视频女| 777午夜精品免费视频| 免费v片在线观看| 一区不卡字幕| 成人18视频在线播放| 中文字幕免费视频观看| 欧美精品一区在线播放| 免费国产自久久久久三四区久久| 色乱码一区二区三区在线| 亚洲综合视频在线观看| 国产农村老头老太视频| 97视频在线观看免费高清完整版在线观看| 视频一区在线观看| 韩国三级与黑人| 色视频一区二区| 18+视频在线观看| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | 久久久久麻豆v国产| 亚洲精品久久久久久下一站 | 手机在线理论片| 中日韩在线视频|