• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    ASP.NET WebForms項目單元測試方法設(shè)計

    2014-03-24 12:47:06董寧
    電子設(shè)計工程 2014年6期
    關(guān)鍵詞:單元測試控件實例

    董寧

    (武漢軟件工程職業(yè)學(xué)院 湖北 武漢 430205)

    ASP.NET WebForms是2002年作為.NET平臺的一部分發(fā)布的,它的發(fā)布對全世界的開發(fā)人員,是一個重要的里程碑。ASP.NET WebForms這一開發(fā)框架能夠讓我們使用C#語言和Visual Studio.NET環(huán)境開發(fā)強大的Web應(yīng)用程序。ASP.NET WebForms框架的優(yōu)勢是可以讓我們利用內(nèi)置控件快速開發(fā)Web應(yīng)用程序,它所提供的控件可以實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的編輯、刪除與格式化顯示和成員管理等幾乎全部的常用Web應(yīng)用程序功能。

    在使用ASP.NET WebForms框架開發(fā)Web應(yīng)用程序時,開發(fā)人員主要的工作就是將控件拖放到頁面上,然后發(fā)布網(wǎng)站。這種開發(fā)模式可以快速的生成Web應(yīng)用程序,但并沒有考慮應(yīng)用程序的體系結(jié)構(gòu)和可測試性。開發(fā)人員很快發(fā)現(xiàn),隨著項目需求的不斷增長,用ASP.NET WebForms框架開發(fā)項目會面臨一系列嚴(yán)重問題。問題之一就是我們無法有效的對ASP.NET WebForms項目代碼進行單元測試[1]。

    本文將重點探討如何在ASP.NET WebForms項目中使用單元測試。

    1 ASP.NET WebForms項目單元測試原理

    一個典型ASP.NET WebForms應(yīng)用程序由兩個主要部分組成。一是后綴名為aspx的頁面文件,由ASP.NET標(biāo)記編寫而成,這種標(biāo)記混合了HTML和ASP.NET控件,并且包含了在服務(wù)器上執(zhí)行的C#程序代碼。第二部分是與aspx頁面文件對應(yīng)的后綴名為aspx.cs的后臺代碼文件,這些文件由C#代碼編寫而成,用以支持頁面文件并與頁面生命周期[2]掛鉤,這些代碼在頁面加載時和頁面響應(yīng)用戶請求時在服務(wù)器上執(zhí)行。

    由于后綴名為aspx.cs的后臺代碼文件與頁面生命周期掛鉤,因此它們的執(zhí)行緊密依賴于ASP.NET核心運行庫。在進行測試時,這種依賴會導(dǎo)致大量問題,例如在編寫單元測試時,將嘗試在ASP.NET運行庫環(huán)境外執(zhí)行代碼,這樣會導(dǎo)致出現(xiàn)大量的ASP.NET運行庫相關(guān)錯誤消息。而對于后綴名為aspx的頁面文件,頁面文件中的任何代碼都是不能被其它類所訪問的,因此將無法為其編寫任何單元測試。同時,ASP.NET WebForms框架還無法讓頁面保持輕量級,因為頁面當(dāng)中往往會包含大量的控件[3],如下面給出的這個GridView控件示例:

    <asp:GridView ID="grd1"runat="server"DataSourceID="obj1"

    AutoGenerateColumns="false"

    AllowPaging="true">

    <Columns>

    <asp:CommandField ShowSelectButton="true"/>

    <asp:BoundField DataField="Name"HeaderText="

    姓名"

    SortExpression="Name"/>

    </Columns>

    </asp:GridView>

    上述類型的代碼會讓頁面文件變得凌亂,同時由頁面文件在服務(wù)器端運行生成的HTML代碼也會過于復(fù)雜。如果按這種方式開發(fā)ASP.NET WebForms項目,則意味無法清晰的分割代碼,導(dǎo)致沒有可行的方式來編寫單元測試,甚至進行自動化的用戶界面測試都是很困難的。

    為了能夠在ASP.NET WebForms項目中使用單元測試,我們應(yīng)該以一種不同的方式來開發(fā)應(yīng)用程序,要讓頁面文件和后臺代碼盡可能地“瘦”,也就是說它們應(yīng)當(dāng)盡量不包含實際頁面邏輯代碼,而是將頁面邏輯代碼放到一個單獨的類中。雖然ASP.NETWebForms框架的默認(rèn)開發(fā)方式鼓勵在后臺代碼文件中編寫頁面邏輯代碼,但這并不符合單元測試的要求。我們應(yīng)該用一種頁面和后臺代碼盡可能清晰簡潔的方式來開發(fā)ASP.NET WebForms項目,最可行的方法就是在項目開發(fā)時遵循 MVP(Model-View-Presenter)設(shè)計模式[4-5]。

    當(dāng)遵循MVP模式開發(fā)ASP.NET WebForms項目時,與常規(guī)開發(fā)方式最大的不同就是將后臺代碼中所有的頁面邏輯轉(zhuǎn)移到一個單獨的類之中,然后通過一個定義了頁面行為的特定接口讓頁面邏輯類與頁面聯(lián)系起來。遵循MVP模式開發(fā)的ASP.NET WebForms項目讓我們可以清晰的分割A(yù)SP.NET WebForms框架代碼和頁面邏輯代碼,只有這樣我們才能為項目添加可行的單元測試代碼。

    2 ASP.NET WebForms項目開發(fā)模式設(shè)計

    假設(shè)現(xiàn)在有一個ASP.NETWebForms頁面需要開發(fā)并編寫單元測試代碼,這個頁面中包含兩個控件,按鈕(Button)和列表框(ListBox),頁面要實現(xiàn)的具體功能是當(dāng)用戶單擊按鈕時向服務(wù)器請求數(shù)據(jù)并在列表框中顯示數(shù)據(jù)。

    遵循MVP設(shè)計模式不難發(fā)現(xiàn),該頁面的具體功能可以通過一個接口抽象出來。該接口需要定義一個請求服務(wù)器數(shù)據(jù)的事件以便頁面調(diào)用,同時還需要一個存儲數(shù)據(jù)的屬性和一個讓頁面更新和顯示這一數(shù)據(jù)的方法。接口定義代碼如下:

    public interface IMainView{

    event EventHandler DataRequest;

    List<string> Data{set; get; }

    void Bind();

    }

    接下來,讓頁面對象實現(xiàn)該接口,這樣我們就可以在單獨的類里實現(xiàn)該接口,并將類實例傳遞給頁面,具體頁面代碼如下:

    public partial class _Default:System.Web.UI.Page,IMainView{

    public event EventHandler DataRequest;

    public List<string> Data{get; set; }

    private MainController Controller;

    protected void Page_Load(object sender, EventArgs e){

    Controller=new MainController(this);

    }

    public void Bind(){

    ListBox1.DataSource=Data;

    ListBox1.DataBind();

    }

    protected void Button1_Click(object sender, EventArgs e)

    {

    if(DataRequest!=null)

    DataRequest(sender, e);

    } }

    在頁面代碼中,名為MainController的類充當(dāng)了MVP設(shè)計模式中控制器的角色,頁面類在初始化時,將自身的實例發(fā)送給了控制器,而控制器存儲這一頁面類實例用于之后的方法調(diào)用。

    MainController類在初始化時必須與頁面所需的所有事件掛鉤,并將它們關(guān)聯(lián)到恰當(dāng)?shù)姆椒ㄉ?,以確保正確實現(xiàn)頁面功能。MainController類實現(xiàn)如下:

    public class MainController{

    public IMainView View{get; set; }

    public MainController(IMainView view) {

    View=view;

    View.DataRequest+=GetData;

    }

    public void GetData(object sender,EventArgs e) {

    View.Data=new List<string>{

    對于商場來說,其競爭力的體現(xiàn)通常為兩個方面,即服務(wù)質(zhì)量和商品更新的速度。商場的經(jīng)濟效益受很多方面的影響,其中室內(nèi)環(huán)境是最為重要的影響因素。若環(huán)境舒適,能最大程度地激起顧客的消費欲望。商品銷售速度加快,競爭力得以提升。室內(nèi)設(shè)計是競爭力提升的基礎(chǔ)保障,商場效益提升是環(huán)境設(shè)計的直接體現(xiàn),兩者相輔相成,缺一不可。圖1是某商場的內(nèi)部結(jié)構(gòu)圖,僅供參考。

    "張三","李四","王五","趙六"

    };

    View.Bind();

    }

    }

    MainController類通過GetData方法實現(xiàn)了獲取服務(wù)器數(shù)據(jù)的功能(本文不涉及數(shù)據(jù)處理,所以數(shù)據(jù)直接給出),并通過DataRequest事件將此功能與頁面掛鉤??刂破黝惖乃写a都是獨立于ASP.NET生命周期存在的,所以能夠很方便的對其編寫單元測試來驗證功能是否正確。由于MainController類包含了幾乎全部的頁面頁面邏輯代碼,如果能夠通過單元測試確保MainController類的正確性,也就能保證整個頁面功能的正確性。

    3 實現(xiàn)ASP.NET WebForms項目單元測試

    實現(xiàn)對ASP.NET WebForms項目的單元測試,主要就是實現(xiàn)對WebForms頁面的單元測試。遵循上一節(jié)所提到的MVP開發(fā)模式編寫ASP.NET WebForms項目頁面,可以讓全部的頁面邏輯實現(xiàn)代碼集中到一個獨立于ASP.NET生命周期存在的類當(dāng)中,也就是說,如果我們能夠編寫單元測試代碼檢測頁面邏輯類與頁面是否正確連接和檢測頁面邏輯相關(guān)代碼是否正確執(zhí)行的話,也就相當(dāng)于完成了對整個頁面的單元測試。

    [TestClass]

    public class MainControllerTests{

    [TestMethod]

    public void CtorIsHookupEvents(){

    IMainView view = MockRepository.GenerateMock <IMainView>();

    view.Expect (view => view.DataRequested += null).IgnoreArguments();

    new MainController(view);

    view.VerifyAllExpectations();

    }

    }

    上述代碼使用了RhinoMocks測試框架,該框架可以根據(jù)IMainView接口模擬出視圖實例用于測試。這一部分重點測試了試圖實例被傳遞給MainController類后其中的DataRequested事件是否關(guān)聯(lián)了[3,4]程序,也就是被執(zhí)行了“+=”操作。

    在對事件實現(xiàn)單元測試后,下一步就是測試在事件發(fā)生時被調(diào)用的GetData方法。GetData方法的作用是在被調(diào)用時填充視圖中的Data屬性。同樣的,在測試時還是利用RhinoMocks測試框架,根據(jù)IMainView接口模擬出視圖實例,然后根據(jù)該實例創(chuàng)建出頁面邏輯類實例,也就是MainController類實例,就好像是一個真正的頁面在運行一樣。接下來直接調(diào)用GetData方法,然后檢測Data屬性是否被正確填充。具體的單元測試代碼如下:

    [TestMethod()]

    public void GetDataIsPopulateData(){

    IMainView view = MockRepository.GenerateStub <IMainView>();

    MainController controller=new MainController(view);

    controller.GetData(this, EventArgs.Empty);

    Assert.AreEqual(4, view.Data.Count);

    }

    如果頁面邏輯類在調(diào)用GetData方法后正確填充了Data屬性,那么上述測試將正確通過,否則單元測試測試會失敗。

    對于ASP.NET WebForms頁面來說,在獲取數(shù)據(jù)后需要通知視圖來刷新用戶界面并向用戶顯示數(shù)據(jù),所以最后要測試的部分就是確保頁面邏輯類能夠正確調(diào)用頁面視圖類中的Bind方法。在這里同樣可以使用RhinoMocks測試框架創(chuàng)建出一個模擬的MainController類實例,來驗證調(diào)用GetData方法后Bind方法也會被正確調(diào)用。具體代碼如下:

    [TestMethod()]

    public void GetDataIsCallBind(){

    IMainView view = MockRepository.GenerateMock <IMainView>();

    view.Expect(v=> v.Bind());

    MainController controller=new MainController(view);

    controller.GetData(this, EventArgs.Empty);

    view.VerifyAllExpectations();

    }

    至此,可以說完全實現(xiàn)了對上節(jié)ASP.NET WebForms項目頁面代碼的單元測試。

    4 結(jié)束語

    雖然遵循MVP模式開發(fā)ASP.NET WebForms項目可以提高代碼的可測試性并實現(xiàn)WebForms頁面的單元測試,但這種方法并不完美。因為ASP.NET WebForms本身的架構(gòu)決定了不可能能將100%的項目代碼都納入到單元測試中來。比如上節(jié)例子中的兩個函數(shù)就無法被包含到單元測試中,其代碼如下:

    public void Bind(){

    ListBox1.DataSource=Data;

    ListBox1.DataBind();

    }

    protected void Button1_Click(object sender, EventArgs e)

    {

    if(DataRequest!=null)

    DataRequest(sender, e);

    }

    盡管上述兩個方法不經(jīng)測試也不會引起大問題,但不難想象,隨著項目的增長,這種未經(jīng)測試的代碼也會增加,從而增加錯誤代碼被引入到項目中的可能性。

    所以,除非是對現(xiàn)有項目進行重構(gòu),一般不建議用MVP模式開發(fā)ASP.NET WebForms項目。其實MVP模式也并不是為ASP.NET WebForms項目開發(fā)的主流方法,它會增加項目的復(fù)雜性,而且微軟官方對該模式也沒有提供支持。如果需要利用ASP.NET開發(fā)可測試性高的Web項目,還是建議選用微軟新發(fā)布的的基于MVC模式的Web開發(fā)框架,稱為ASP.NET MVC[6],該框架在可測試性支持方面比ASP.NET WebForms框架好很多。

    [1]張旭,王鵬,習(xí)媛媛,等.單元測試在軟件質(zhì)量保證中的應(yīng)用研究[J].煤炭技術(shù),2010,29(6):185-186.ZHANG Xu,WANG Peng,XI Yuan-yuan,et al.Application of unittestingtosoftwarequality assurance[J].Coal Technology,2010,29(6):185-186.

    [2]江艷萍.深入淺出ASP.NET頁面對象模型 [J].電腦知識與技術(shù),2007, 2(11):1314-1315.JIANG Yan-ping.Understanding asp.net page object model in a simple way[J].Computer Knowledge and Technology,2007,2(11):1314-1315.

    [3]馬潔,周靜.基于ASP.NET控件定義的分析與比較[J].通信技術(shù),2010,43(4):144-146.MA Jie,ZHOU Jing.Analysis and comparion of the control definition based on asp.net[J].Communications Technology,2010,43(4):144-146.

    [4]顧明霞,蔡長安.WebForms、MVC和MVP在ASP.NET開發(fā)中的對比分析[J].重慶工商大學(xué)學(xué)報:自然科學(xué)版,2011,28(4):394-397,409.GUMing-xia,CAIChang-an.Comparativeanalysisof webforms,MVC and MVP architecture in asp.net development[J].Journal of Chongqing Technology and Business:Natural Sciences Edition,2011,28(4):394-397,409.

    [5]劉海巖,鎖志海,呂青,等.設(shè)計模式及其在軟件設(shè)計中的應(yīng)用研究[J].西安交通大學(xué)學(xué)報,2005,39(10):1043-1047.LIU Hai-yan,SUO Zhi-hai,LV Qing,et al.Design patterns and their applications to software design[J].Journal of Xi'an Jiaotong University,2005, 39(10):1043-1047.

    [6]陳曉丹,鄭毅.ASP.NET開發(fā)環(huán)境下的WebForm與MVC設(shè)計模式[J].武漢工程職業(yè)技術(shù)學(xué)院學(xué)報,2009,21(2):38-40,34.CHEN Xiao-dan,ZHENG Yi.Comparison of ASP webform and MVC[J].Journal of Wuhan Engineering Institute,2009,21(2):38-40,34.

    猜你喜歡
    單元測試控件實例
    關(guān)于.net控件數(shù)組的探討
    軟件(2018年7期)2018-08-13 09:44:42
    一年級上冊第五單元測試
    一年級上冊一、二單元測試
    完形填空Ⅱ
    完形填空Ⅰ
    就這樣玩會VBA中常見的自定義控件
    電腦迷(2012年24期)2012-04-29 00:44:03
    第五單元測試卷
    第六單元測試卷
    在PowerBuUder中利用WinSock控件制作簡單的Web服務(wù)器
    VB.NET中ListBox控件實現(xiàn)流程跟蹤
    9191精品国产免费久久| 亚洲第一av免费看| 好男人电影高清在线观看| 伊人久久大香线蕉亚洲五| 精品一品国产午夜福利视频| 欧美av亚洲av综合av国产av| 在线观看一区二区三区激情| 777久久人妻少妇嫩草av网站| 国产亚洲精品综合一区在线观看 | 黄片播放在线免费| 国产99久久九九免费精品| 日日摸夜夜添夜夜添小说| av国产精品久久久久影院| 窝窝影院91人妻| 精品国产乱子伦一区二区三区| 中文字幕最新亚洲高清| 正在播放国产对白刺激| 搡老乐熟女国产| 亚洲精品久久午夜乱码| 国产高清国产精品国产三级| 久久伊人香网站| 精品日产1卡2卡| 国产区一区二久久| 亚洲人成伊人成综合网2020| 操出白浆在线播放| 久久久久九九精品影院| 大型av网站在线播放| 视频在线观看一区二区三区| 国产精华一区二区三区| 国产97色在线日韩免费| 99久久综合精品五月天人人| 精品欧美一区二区三区在线| 久久国产精品人妻蜜桃| 亚洲欧美日韩高清在线视频| 男男h啪啪无遮挡| 色综合婷婷激情| 色综合婷婷激情| 不卡av一区二区三区| 欧美精品啪啪一区二区三区| 9191精品国产免费久久| 色婷婷久久久亚洲欧美| 中文亚洲av片在线观看爽| 国产高清视频在线播放一区| 亚洲成人精品中文字幕电影 | 满18在线观看网站| 大香蕉久久成人网| 99久久精品国产亚洲精品| 一级片'在线观看视频| 国产在线精品亚洲第一网站| 国产色视频综合| 黄片大片在线免费观看| 午夜久久久在线观看| 老司机深夜福利视频在线观看| 国产野战对白在线观看| а√天堂www在线а√下载| 性欧美人与动物交配| 美国免费a级毛片| 国产亚洲精品第一综合不卡| а√天堂www在线а√下载| 亚洲第一欧美日韩一区二区三区| 777久久人妻少妇嫩草av网站| 国产高清激情床上av| 日韩av在线大香蕉| 久久国产精品人妻蜜桃| 欧美日韩黄片免| 国产成年人精品一区二区 | 婷婷精品国产亚洲av在线| 90打野战视频偷拍视频| 少妇的丰满在线观看| 国产熟女xx| 久久人人精品亚洲av| 国产一区二区三区在线臀色熟女 | 一a级毛片在线观看| 国产精品久久久久久人妻精品电影| 成熟少妇高潮喷水视频| 精品少妇一区二区三区视频日本电影| 91精品三级在线观看| 成年人黄色毛片网站| 人人澡人人妻人| 国产99白浆流出| 国产成年人精品一区二区 | 美女大奶头视频| 国产亚洲精品久久久久5区| 最新在线观看一区二区三区| 欧美精品啪啪一区二区三区| 欧美激情 高清一区二区三区| 大香蕉久久成人网| 精品卡一卡二卡四卡免费| 国产精品影院久久| 欧美激情高清一区二区三区| 久久久国产一区二区| 激情在线观看视频在线高清| 午夜福利,免费看| 日韩高清综合在线| 亚洲免费av在线视频| 精品国产乱子伦一区二区三区| 黄网站色视频无遮挡免费观看| 精品久久久久久,| 亚洲第一青青草原| 欧美日韩一级在线毛片| 久久久久久久久中文| 97碰自拍视频| 欧美激情高清一区二区三区| 久久午夜综合久久蜜桃| 精品一区二区三区视频在线观看免费 | 啦啦啦免费观看视频1| 久久99一区二区三区| 国产激情久久老熟女| 黄色成人免费大全| 亚洲,欧美精品.| 男人操女人黄网站| 一本大道久久a久久精品| 欧美在线黄色| 久久久久九九精品影院| 色播在线永久视频| 在线视频色国产色| 黄片大片在线免费观看| 国产熟女xx| 久久狼人影院| 69精品国产乱码久久久| 无限看片的www在线观看| 国产真人三级小视频在线观看| 日日干狠狠操夜夜爽| 日日干狠狠操夜夜爽| www日本在线高清视频| 欧美精品啪啪一区二区三区| 12—13女人毛片做爰片一| 国产无遮挡羞羞视频在线观看| 村上凉子中文字幕在线| 19禁男女啪啪无遮挡网站| 国产成人影院久久av| 性欧美人与动物交配| 男男h啪啪无遮挡| 色哟哟哟哟哟哟| 精品一品国产午夜福利视频| 极品教师在线免费播放| 别揉我奶头~嗯~啊~动态视频| svipshipincom国产片| 成人永久免费在线观看视频| 每晚都被弄得嗷嗷叫到高潮| 岛国视频午夜一区免费看| 日韩有码中文字幕| 两性午夜刺激爽爽歪歪视频在线观看 | 国产一区二区激情短视频| 亚洲成a人片在线一区二区| 亚洲国产精品合色在线| 久久久水蜜桃国产精品网| 免费不卡黄色视频| 又黄又爽又免费观看的视频| 亚洲第一青青草原| www国产在线视频色| 又紧又爽又黄一区二区| 亚洲狠狠婷婷综合久久图片| 黑人猛操日本美女一级片| 999久久久精品免费观看国产| 久久久国产精品麻豆| 精品久久蜜臀av无| 亚洲国产欧美日韩在线播放| 欧美日韩乱码在线| 50天的宝宝边吃奶边哭怎么回事| 美女午夜性视频免费| 国产成人影院久久av| 一级毛片高清免费大全| 18禁国产床啪视频网站| 久久草成人影院| 国产精品亚洲一级av第二区| 极品教师在线免费播放| 91老司机精品| 久久国产精品男人的天堂亚洲| 久久久久国内视频| 色播在线永久视频| 深夜精品福利| 成人三级做爰电影| 亚洲成人久久性| 免费女性裸体啪啪无遮挡网站| svipshipincom国产片| 成人av一区二区三区在线看| 在线看a的网站| 丰满迷人的少妇在线观看| 大型黄色视频在线免费观看| 天堂中文最新版在线下载| 国产成人精品久久二区二区91| 男女高潮啪啪啪动态图| 欧美+亚洲+日韩+国产| 高清黄色对白视频在线免费看| 级片在线观看| 日韩成人在线观看一区二区三区| 免费看十八禁软件| 搡老熟女国产l中国老女人| 黄色女人牲交| 少妇的丰满在线观看| 亚洲 欧美 日韩 在线 免费| 亚洲av熟女| 夜夜躁狠狠躁天天躁| 久久人人精品亚洲av| 日韩高清综合在线| 在线十欧美十亚洲十日本专区| 人人妻人人爽人人添夜夜欢视频| 狂野欧美激情性xxxx| 亚洲熟女毛片儿| 国产一区二区三区在线臀色熟女 | 啦啦啦 在线观看视频| 精品欧美一区二区三区在线| 午夜视频精品福利| 在线观看午夜福利视频| 欧美 亚洲 国产 日韩一| 亚洲av美国av| 多毛熟女@视频| 成人国产一区最新在线观看| a在线观看视频网站| 欧美乱码精品一区二区三区| 黄色视频不卡| 成人影院久久| 在线观看一区二区三区激情| 18禁黄网站禁片午夜丰满| 97人妻天天添夜夜摸| 久久久国产精品麻豆| 伦理电影免费视频| 国产精品久久久av美女十八| 人人妻人人澡人人看| 手机成人av网站| 久久香蕉国产精品| 久久影院123| 在线视频色国产色| 亚洲人成伊人成综合网2020| 丝袜在线中文字幕| cao死你这个sao货| 99国产精品99久久久久| 99国产精品免费福利视频| 老司机午夜福利在线观看视频| 亚洲一区二区三区色噜噜 | 看黄色毛片网站| 波多野结衣av一区二区av| 又大又爽又粗| 97人妻天天添夜夜摸| 久久久精品欧美日韩精品| 正在播放国产对白刺激| 在线观看一区二区三区激情| 亚洲欧美激情综合另类| 丝袜在线中文字幕| 亚洲五月婷婷丁香| 777久久人妻少妇嫩草av网站| 国产免费现黄频在线看| 国产精品一区二区免费欧美| 两个人免费观看高清视频| 很黄的视频免费| 国产亚洲精品久久久久久毛片| 丝袜美腿诱惑在线| 男男h啪啪无遮挡| a级片在线免费高清观看视频| 欧美丝袜亚洲另类 | 欧美黄色片欧美黄色片| 国产精品永久免费网站| 男女下面进入的视频免费午夜 | 免费av毛片视频| 色婷婷av一区二区三区视频| 999久久久国产精品视频| 色精品久久人妻99蜜桃| 老司机亚洲免费影院| 亚洲中文av在线| 在线播放国产精品三级| 免费少妇av软件| 国产欧美日韩综合在线一区二区| 动漫黄色视频在线观看| a级毛片在线看网站| 久久精品亚洲精品国产色婷小说| 精品久久久久久久毛片微露脸| 国产片内射在线| 日本五十路高清| 国产精品成人在线| 在线观看免费视频日本深夜| 人成视频在线观看免费观看| 热99国产精品久久久久久7| 欧美日韩中文字幕国产精品一区二区三区 | 精品无人区乱码1区二区| 亚洲专区国产一区二区| 国产精品 国内视频| 亚洲专区字幕在线| 嫩草影院精品99| 国产aⅴ精品一区二区三区波| 99国产极品粉嫩在线观看| 亚洲人成电影观看| 亚洲va日本ⅴa欧美va伊人久久| 19禁男女啪啪无遮挡网站| 成人影院久久| 国产av一区二区精品久久| 精品国产一区二区久久| 免费在线观看影片大全网站| 久久久久国内视频| 麻豆成人av在线观看| 欧美激情极品国产一区二区三区| 国产成人av激情在线播放| 久久亚洲精品不卡| 久久久国产一区二区| 国产野战对白在线观看| bbb黄色大片| 一边摸一边做爽爽视频免费| 色精品久久人妻99蜜桃| 黄色成人免费大全| 国产精品久久视频播放| 久久久久国产精品人妻aⅴ院| 国产免费现黄频在线看| 精品高清国产在线一区| 女性生殖器流出的白浆| 一级毛片精品| 啦啦啦 在线观看视频| 9色porny在线观看| 美女高潮喷水抽搐中文字幕| 天堂影院成人在线观看| 国产免费av片在线观看野外av| 国产成人欧美在线观看| 国产精品久久久av美女十八| 中出人妻视频一区二区| 国产真人三级小视频在线观看| av片东京热男人的天堂| 国产野战对白在线观看| 首页视频小说图片口味搜索| 欧美av亚洲av综合av国产av| 大码成人一级视频| 欧美在线黄色| 亚洲男人的天堂狠狠| 天天影视国产精品| 久9热在线精品视频| 免费在线观看视频国产中文字幕亚洲| 精品人妻1区二区| 亚洲成人久久性| 美女高潮到喷水免费观看| 最新在线观看一区二区三区| 亚洲国产精品合色在线| 亚洲,欧美精品.| 国产区一区二久久| 亚洲一区中文字幕在线| 国产精品香港三级国产av潘金莲| 丝袜人妻中文字幕| 国产精品野战在线观看 | 免费在线观看日本一区| 日韩精品青青久久久久久| 亚洲精品国产区一区二| 日韩三级视频一区二区三区| 欧美日韩一级在线毛片| 老司机亚洲免费影院| 中文字幕人妻丝袜制服| 亚洲自偷自拍图片 自拍| 俄罗斯特黄特色一大片| 国产精品久久久久成人av| av在线天堂中文字幕 | 男女床上黄色一级片免费看| xxxhd国产人妻xxx| 十八禁网站免费在线| 国产在线精品亚洲第一网站| 欧美黑人欧美精品刺激| 午夜免费鲁丝| 亚洲精品国产精品久久久不卡| 精品一区二区三区av网在线观看| 亚洲久久久国产精品| 人人澡人人妻人| 深夜精品福利| 99精品在免费线老司机午夜| 亚洲av日韩精品久久久久久密| 亚洲精品av麻豆狂野| 啦啦啦 在线观看视频| 亚洲色图综合在线观看| 国产一区二区激情短视频| 日日爽夜夜爽网站| 亚洲人成77777在线视频| 午夜日韩欧美国产| 99精国产麻豆久久婷婷| 亚洲一区二区三区不卡视频| 丝袜美腿诱惑在线| 国产精品乱码一区二三区的特点 | 精品午夜福利视频在线观看一区| 在线观看一区二区三区| 国产片内射在线| 久久精品国产清高在天天线| xxx96com| 88av欧美| 99精品在免费线老司机午夜| 久久久久久大精品| 91九色精品人成在线观看| 亚洲狠狠婷婷综合久久图片| 欧美乱色亚洲激情| 亚洲av熟女| 成年版毛片免费区| 免费看十八禁软件| 999精品在线视频| 欧美人与性动交α欧美精品济南到| 亚洲一区二区三区色噜噜 | 亚洲中文字幕日韩| 后天国语完整版免费观看| 亚洲国产欧美日韩在线播放| 久久久精品国产亚洲av高清涩受| 无遮挡黄片免费观看| 亚洲成国产人片在线观看| 日韩成人在线观看一区二区三区| 亚洲男人的天堂狠狠| 午夜福利一区二区在线看| 成人影院久久| 成年人免费黄色播放视频| 国产成人免费无遮挡视频| 露出奶头的视频| 美国免费a级毛片| 日本a在线网址| 一边摸一边抽搐一进一出视频| 国产成人精品无人区| 777久久人妻少妇嫩草av网站| 久久精品91无色码中文字幕| 久久精品91蜜桃| 成年人黄色毛片网站| 亚洲成人久久性| 人人妻人人澡人人看| av中文乱码字幕在线| 久久久久久亚洲精品国产蜜桃av| 美女午夜性视频免费| 久久伊人香网站| 亚洲第一青青草原| 看片在线看免费视频| 露出奶头的视频| 久久精品亚洲精品国产色婷小说| av网站免费在线观看视频| 国产精品免费视频内射| 国产色视频综合| ponron亚洲| 美女 人体艺术 gogo| 欧美日本亚洲视频在线播放| 欧美中文综合在线视频| 亚洲久久久国产精品| 99国产精品99久久久久| 一夜夜www| 激情在线观看视频在线高清| 国产精品偷伦视频观看了| 欧美一区二区精品小视频在线| 精品一区二区三区四区五区乱码| 美女大奶头视频| 久久伊人香网站| 深夜精品福利| 国产亚洲精品综合一区在线观看 | 丝袜在线中文字幕| av片东京热男人的天堂| 久热这里只有精品99| 9色porny在线观看| 亚洲av电影在线进入| 欧美乱色亚洲激情| 1024视频免费在线观看| 久久婷婷成人综合色麻豆| 久久久精品国产亚洲av高清涩受| 美女午夜性视频免费| 国产人伦9x9x在线观看| 国产精品日韩av在线免费观看 | 免费av毛片视频| av片东京热男人的天堂| 在线观看免费视频网站a站| 国产精品一区二区在线不卡| 国产精品日韩av在线免费观看 | 久久人人精品亚洲av| 亚洲精品国产一区二区精华液| 黄色女人牲交| 黄色怎么调成土黄色| 日韩视频一区二区在线观看| 岛国在线观看网站| 超色免费av| 少妇粗大呻吟视频| 国产97色在线日韩免费| 国产高清激情床上av| 亚洲在线自拍视频| 午夜福利在线免费观看网站| 757午夜福利合集在线观看| 99riav亚洲国产免费| 女人被躁到高潮嗷嗷叫费观| 操美女的视频在线观看| av欧美777| 国产成人av激情在线播放| 国产精品爽爽va在线观看网站 | 午夜成年电影在线免费观看| 深夜精品福利| 精品国产国语对白av| 交换朋友夫妻互换小说| 激情视频va一区二区三区| 久久这里只有精品19| 一a级毛片在线观看| 人人澡人人妻人| 久久久精品欧美日韩精品| 9热在线视频观看99| 超色免费av| 97碰自拍视频| 成熟少妇高潮喷水视频| 88av欧美| 韩国av一区二区三区四区| 久久久久久久久久久久大奶| 老司机靠b影院| 在线av久久热| 午夜免费观看网址| 99国产精品99久久久久| 亚洲一码二码三码区别大吗| 精品国产超薄肉色丝袜足j| 午夜老司机福利片| 欧美在线黄色| 精品一区二区三区av网在线观看| 亚洲性夜色夜夜综合| 亚洲色图av天堂| 国产熟女午夜一区二区三区| 欧美av亚洲av综合av国产av| 最新美女视频免费是黄的| 一个人免费在线观看的高清视频| 老熟妇乱子伦视频在线观看| 欧美色视频一区免费| 涩涩av久久男人的天堂| 欧洲精品卡2卡3卡4卡5卡区| 亚洲熟妇中文字幕五十中出 | 亚洲五月天丁香| 免费在线观看影片大全网站| 狂野欧美激情性xxxx| 欧美黄色片欧美黄色片| 91九色精品人成在线观看| 麻豆av在线久日| 嫩草影视91久久| 多毛熟女@视频| 美女高潮到喷水免费观看| 色老头精品视频在线观看| 男人操女人黄网站| 国产精品久久久av美女十八| 久久久久久久久免费视频了| 精品国产乱码久久久久久男人| 亚洲人成网站在线播放欧美日韩| 久久精品影院6| 成人精品一区二区免费| 大型av网站在线播放| 99久久久亚洲精品蜜臀av| 国产单亲对白刺激| 亚洲一卡2卡3卡4卡5卡精品中文| 韩国精品一区二区三区| 美女扒开内裤让男人捅视频| 亚洲av成人av| 老司机亚洲免费影院| 欧美色视频一区免费| 巨乳人妻的诱惑在线观看| 中文字幕最新亚洲高清| 大陆偷拍与自拍| 国产亚洲av高清不卡| 性少妇av在线| 午夜免费观看网址| 咕卡用的链子| 国产精华一区二区三区| 精品久久久久久,| 国产成人av激情在线播放| 18禁美女被吸乳视频| 色哟哟哟哟哟哟| 色综合欧美亚洲国产小说| 亚洲熟妇熟女久久| 亚洲一区中文字幕在线| 国产精品美女特级片免费视频播放器 | 岛国视频午夜一区免费看| 又黄又粗又硬又大视频| 真人一进一出gif抽搐免费| 亚洲国产精品999在线| 精品国产乱子伦一区二区三区| 亚洲国产精品一区二区三区在线| 亚洲精品国产区一区二| 精品午夜福利视频在线观看一区| 啦啦啦 在线观看视频| 97人妻天天添夜夜摸| x7x7x7水蜜桃| 国产精品免费一区二区三区在线| 欧美乱色亚洲激情| 99在线视频只有这里精品首页| 免费少妇av软件| 日日夜夜操网爽| cao死你这个sao货| 欧美+亚洲+日韩+国产| 亚洲欧洲精品一区二区精品久久久| 露出奶头的视频| 日韩中文字幕欧美一区二区| 国产单亲对白刺激| 啦啦啦 在线观看视频| 国产精品1区2区在线观看.| aaaaa片日本免费| 亚洲,欧美精品.| 亚洲va日本ⅴa欧美va伊人久久| 99香蕉大伊视频| 国产av一区二区精品久久| 国产熟女xx| 一区在线观看完整版| 久热这里只有精品99| 欧美乱码精品一区二区三区| 后天国语完整版免费观看| 精品一品国产午夜福利视频| 精品国产国语对白av| 欧美成狂野欧美在线观看| 国产又爽黄色视频| 男男h啪啪无遮挡| 一区二区三区精品91| 美女午夜性视频免费| 男男h啪啪无遮挡| 国产精品偷伦视频观看了| 精品国产一区二区三区四区第35| 成人精品一区二区免费| 一区二区三区精品91| 亚洲国产看品久久| 色综合婷婷激情| 欧美精品一区二区免费开放| 精品国产一区二区三区四区第35| 久久久久久久久中文| 欧美精品一区二区免费开放| 亚洲精品久久成人aⅴ小说| 精品久久久精品久久久| 午夜精品久久久久久毛片777| 另类亚洲欧美激情| 国产免费男女视频| 中文字幕人妻熟女乱码| 少妇被粗大的猛进出69影院| 国产精品久久久久成人av| 视频区图区小说| 男女床上黄色一级片免费看| 国产精品一区二区精品视频观看| 女人被狂操c到高潮| 女生性感内裤真人,穿戴方法视频|