日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

摆脱困境:在DbUnit数据集中使用空值

發布時間:2023/12/3 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 摆脱困境:在DbUnit数据集中使用空值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果我們正在為使用Spring Framework的應用程序編寫集成測試,則可以通過使用Spring Test DbUnit將DbUnit與Spring測試框架集成。

但是, 這種集成并非沒有問題

通常,我們必須在運行測試之前向數據庫中插入空值,或者驗證保存到特定表列中的值是否為空 。 這些是非常基本的用例,但是編寫支持它們的集成測試非常棘手。

這篇博客文章指出了與null值有關的問題,并描述了如何解決它們。 讓我們從快速查看被測系統開始。

如果您不知道如何為存儲庫編寫集成測試,則應閱讀我的博客文章,標題為: Spring Data JPA教程:集成測試 。

它解釋了如何為Spring Data JPA存儲庫編寫集成測試,但是可以使用相同的方法為其他使用關系數據庫的Spring支持的存儲庫編寫測試。

被測系統

經過測試的“應用程序”具有一個實體和一個Spring Data JPA存儲庫,該存儲庫為該實體提供CRUD操作。

我們的實體類稱為Todo ,其源代碼的相關部分如下所示:

import javax.persistence.*;@Entity @Table(name="todos") public class Todo {private static final int MAX_LENGTH_DESCRIPTION = 500;private static final int MAX_LENGTH_TITLE = 100;@Id@GeneratedValue(strategy = GenerationType.AUTO)private Long id;@Column(name = "description", nullable = true, length = MAX_LENGTH_DESCRIPTION)private String description;@Column(name = "title", nullable = false, length = MAX_LENGTH_TITLE)private String title;@Versionprivate long version;//Constructors, builder class, and getters are omitted. }
  • 您可以從Github獲取Todo類的完整源代碼 。

另外,我們不應該使用構建器模式,因為在創建新的Todo對象時,我們的實體只有兩個String字段被設置。 但是,我在這里使用它是因為它使我們的測試更易于閱讀。

我們的Spring Data JPA存儲庫接口稱為TodoRepository ,它擴展了CrudRepository <T,ID擴展了Serializable>接口。 該存儲庫為Todo對象提供CRUD操作。 它還聲明一種查詢方法,該方法返回其說明與給定搜索詞匹配的所有待辦事項條目。

TodoRepository接口的源代碼如下所示:

import org.springframework.data.repository.CrudRepository;public interface TodoRepository extends CrudRepository<Todo, Long> {List<Todo> findByDescription(String description); }

補充閱讀:

  • CrudRepository接口的Javadoc
  • Spring Data JPA教程
  • Spring Data JPA –參考文檔

讓我們繼續前進,了解在編寫用于從關系數據庫讀取信息或將信息保存到其中的代碼的集成測試時,如何處理空值。

處理空值

在為數據訪問代碼編寫集成測試時 ,我們必須在每個測試用例之前將數據庫初始化為已知狀態,并確保將正確的數據寫入數據庫。

本節確定了在編寫集成測試以解決我們遇到的問題

  • 使用平面XML數據集。
  • 將空值寫入數據庫或確保表列的值為null 。

我們還將學習如何解決這些問題。

將空值插入數據庫

當我們編寫從數據庫讀取信息的集成測試時,必須在調用測試之前將該數據庫初始化為已知狀態,有時我們必須向數據庫中插入空值。

因為我們使用平面XML數據集,所以可以通過省略相應的屬性值將空值插入到表列中。 這意味著,如果我們想在todos表的description列中插入null值,則可以通過使用以下DbUnit數據集來做到這一點:

<dataset><todos id="1" title="FooBar" version="0"/> </dataset>

但是,通常我們必須在已使用的數據庫表中插入多行。 以下DbUnit數據集( todo-entries.xml )將兩行插入todos表:

<dataset><todos id="1" title="FooBar" version="0"/><todos id="2" description="description" title="title" version="0"/> </dataset>

讓我們找出對TodoRepository接口的findByDescription()方法進行集成測試并使用先前的數據集( todo-entries.xml )初始化數據庫時發生的情況。 我們的集成測試的源代碼如下所示:

import com.github.springtestdbunit.DbUnitTestExecutionListener; import com.github.springtestdbunit.annotation.DatabaseSetup; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestExecutionListeners; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; import org.springframework.test.context.support.DirtiesContextTestExecutionListener; import org.springframework.test.context.transaction.TransactionalTestExecutionListener;import static org.assertj.core.api.Assertions.assertThat;@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {PersistenceContext.class}) @TestExecutionListeners({ DependencyInjectionTestExecutionListener.class,DirtiesContextTestExecutionListener.class,TransactionalTestExecutionListener.class,DbUnitTestExecutionListener.class }) public class ITTodoRepositoryTest {private static final Long ID = 2L;private static final String DESCRIPTION = "description";private static final String TITLE = "title";private static final long VERSION = 0L;@Autowiredprivate TodoRepository repository;@Test@DatabaseSetup("todo-entries.xml")public void findByDescription_ShouldReturnOneTodoEntry() {List<Todo> todoEntries = repository.findByDescription(DESCRIPTION);assertThat(todoEntries).hasSize(1);Todo found = todoEntries.get(0);assertThat(found.getId()).isEqualTo(ID);assertThat(found.getTitle()).isEqualTo(TITLE);assertThat(found.getDescription()).isEqualTo(DESCRIPTION);assertThat(found.getVersion()).isEqualTo(VERSION);} }

當運行此集成測試時,會出現以下斷言錯誤:

java.lang.AssertionError: Expected size:<1> but was:<0> in: <[]>

這意味著從數據庫中找不到正確的待辦事項條目。 發生了什么? 我們的查詢方法是如此簡單,以至于它應該起作用,特別是因為在調用測試用例之前,我們已將正確的數據插入數據庫。

好吧,實際上兩行的描述列都是空的。 DbUnit常見問題說明了發生這種情況的原因 :

DbUnit使用表的第一個標記來定義要填充的列。 如果此表的以下記錄包含額外的列,那么將不會填充這些列。

它還提供了解決此問題的方法:

從DBUnit 2.3.0開始,有一種稱為“列檢測”的功能,該功能基本上將整個XML讀入緩沖區,并在出現新列時動態添加它們。

我們可以通過反轉todos元素的順序來解決此問題,但這很麻煩,因為每次創建新數據集時我們都必須記住要做的事情。 我們應該使用列檢測,因為它消除了人為錯誤的可能性。

我們可以按照以下步驟啟用列檢測:

  • 創建一個擴展AbstractDataSetLoader類的數據集加載器類。
  • 重寫AbstractDataSetLoader類的受保護的IDateSet createDataSet(Resource resource)方法。
  • 通過啟用列感應并返回新的FlatXmlDataSet對象來實現此方法。
  • ColumnSensingFlatXmlDataSetLoader類的源代碼如下所示:

    import com.github.springtestdbunit.dataset.AbstractDataSetLoader; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; import org.springframework.core.io.Resource; import java.io.InputStream;public class ColumnSensingFlatXMLDataSetLoader extends AbstractDataSetLoader {@Overrideprotected IDataSet createDataSet(Resource resource) throws Exception {FlatXmlDataSetBuilder builder = new FlatXmlDataSetBuilder();builder.setColumnSensing(true);try (InputStream inputStream = resource.getInputStream()) {return builder.build(inputStream);}} }

    補充閱讀:

    • FlatXmlDataSet類的Javadoc

    現在,我們可以通過使用@DbUnitConfiguration批注注釋測試類并將其加載器屬性的值設置為ColumnSensingFlatXmlDataSetLoader.class,來配置測試類以使用此數據加載器 。

    我們的固定集成測試的源代碼如下所示:

    import com.github.springtestdbunit.DbUnitTestExecutionListener; import com.github.springtestdbunit.annotation.DatabaseSetup; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestExecutionListeners; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; import org.springframework.test.context.support.DirtiesContextTestExecutionListener; import org.springframework.test.context.transaction.TransactionalTestExecutionListener;import static org.assertj.core.api.Assertions.assertThat;@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {PersistenceContext.class}) @TestExecutionListeners({ DependencyInjectionTestExecutionListener.class,DirtiesContextTestExecutionListener.class,TransactionalTestExecutionListener.class,DbUnitTestExecutionListener.class }) @DbUnitConfiguration(dataSetLoader = ColumnSensingFlatXMLDataSetLoader.class) public class ITTodoRepositoryTest {private static final Long ID = 2L;private static final String DESCRIPTION = "description";private static final String TITLE = "title";private static final long VERSION = 0L;@Autowiredprivate TodoRepository repository;@Test@DatabaseSetup("todo-entries.xml")public void findByDescription_ShouldReturnOneTodoEntry() {List<Todo> todoEntries = repository.findByDescription(DESCRIPTION);assertThat(todoEntries).hasSize(1);Todo found = todoEntries.get(0);assertThat(found.getId()).isEqualTo(ID);assertThat(found.getTitle()).isEqualTo(TITLE);assertThat(found.getDescription()).isEqualTo(DESCRIPTION);assertThat(found.getVersion()).isEqualTo(VERSION);} }

    當我們第二次運行集成測試時,它通過了。

    讓我們找出如何驗證空值是否已保存到數據庫中。

    驗證表列的值是否為空

    在編寫將信息保存到數據庫的集成測試時,我們必須確保將正確的信息確實保存到數據庫中,有時我們必須驗證表列的值為null 。

    例如,如果我們寫這證實了,當我們創建一個沒有描述一個待辦事項條目正確的信息保存到數據庫中的集成測試,我們必須確保一個空值插入到待辦事項表的說明列。

    我們的集成測試的源代碼如下所示:

    import com.github.springtestdbunit.DbUnitTestExecutionListener; import com.github.springtestdbunit.annotation.DatabaseSetup; import com.github.springtestdbunit.annotation.DbUnitConfiguration; import com.github.springtestdbunit.annotation.ExpectedDatabase; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestExecutionListeners; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; import org.springframework.test.context.support.DirtiesContextTestExecutionListener; import org.springframework.test.context.transaction.TransactionalTestExecutionListener;import static org.assertj.core.api.Assertions.assertThat;@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {PersistenceContext.class}) @TestExecutionListeners({ DependencyInjectionTestExecutionListener.class,DirtiesContextTestExecutionListener.class,TransactionalTestExecutionListener.class,DbUnitTestExecutionListener.class }) @DbUnitConfiguration(dataSetLoader = ColumnSensingFlatXMLDataSetLoader.class) public class ITTodoRepositoryTest {private static final String DESCRIPTION = "description";private static final String TITLE = "title";@Autowiredprivate TodoRepository repository;@Test@DatabaseSetup("no-todo-entries.xml")@ExpectedDatabase("save-todo-entry-without-description-expected.xml")public void save_WithoutDescription_ShouldSaveTodoEntryToDatabase() {Todo todoEntry = Todo.getBuilder().title(TITLE).description(null).build();repository.save(todoEntry);} }

    這不是一個很好的集成測試,因為它僅測試Spring Data JPA和Hibernate是否正常工作。 我們不應該通過為框架編寫測試來浪費時間。 如果我們不信任框架,則不應使用它。

    如果您想學習為數據訪問代碼編寫好的集成測試,則應該閱讀我的教程: 編寫數據訪問代碼的測試 。

    用于初始化數據庫的DbUnit數據集( no-todo-entries.xml )如下所示:

    <dataset><todos/> </dataset>

    因為我們沒有設置保存的todo條目的描述 ,所以todos表的description列應該為null 。 這意味著我們應該從數據集中省略它,以驗證是否將正確的信息保存到數據庫中。

    該數據集( save-todo-entry-without-description-expected.xml )如下所示:

    <dataset><todos id="1" title="title" version="0"/> </dataset>

    當我們運行集成測試時,它失敗,并且我們看到以下錯誤消息:

    junit.framework.ComparisonFailure: column count (table=todos, expectedColCount=3, actualColCount=4) Expected :[id, title, version] Actual :[DESCRIPTION, ID, TITLE, VERSION]

    問題在于DbUnit期望todos表僅具有id , title和version列。 這樣做的原因是,這些列是從數據集的第一行(也是唯一的行)中找到的唯一列。

    我們可以使用ReplacementDataSet解決此問題。 ReplacementDataSet是一個裝飾器,它用替換對象替換從平面XML數據集文件中找到的占位符。 讓我們修改自定義的數據集加載類返回一個ReplacementDataSet對象替換“[空]”字符串與空 。

    我們可以通過對自定義數據集加載器進行以下更改來做到這一點:

  • 將私有的createReplacementDataSet()方法添加到數據集加載器類。 此方法返回一個ReplacementDataSet對象,并將FlatXmlDataSet對象作為方法參數。
  • 通過創建新的ReplacementDataSet對象并返回創建的對象來實現此方法。
  • 修改createDataSet()方法以調用私有的createReplacementDataSet()方法并返回創建的ReplacementDataSet對象。
  • ColumnSensingReplacementDataSetLoader類的源代碼如下所示:

    import com.github.springtestdbunit.dataset.AbstractDataSetLoader; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.ReplacementDataSet; import org.dbunit.dataset.xml.FlatXmlDataSet; import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; import org.springframework.core.io.Resource;import java.io.InputStream;public class ColumnSensingReplacementDataSetLoader extends AbstractDataSetLoader {@Overrideprotected IDataSet createDataSet(Resource resource) throws Exception {FlatXmlDataSetBuilder builder = new FlatXmlDataSetBuilder();builder.setColumnSensing(true);try (InputStream inputStream = resource.getInputStream()) {return createReplacementDataSet(builder.build(inputStream));}}private ReplacementDataSet createReplacementDataSet(FlatXmlDataSet dataSet) {ReplacementDataSet replacementDataSet = new ReplacementDataSet(dataSet);//Configure the replacement dataset to replace '[null]' strings with null.replacementDataSet.addReplacementObject("[null]", null);return replacementDataSet;} }

    補充閱讀:

    • IDataSet接口的最常用實現
    • ReplacementDataSet類的Javadoc

    我們可以按照以下步驟修復集成測試:

  • 通過使用ColumnSensingReplacementDataSetLoader類,配置我們的測試類以加載使用的DbUnit數據集。
  • 修改我們的數據集以驗證description列的值為null 。
  • 首先 ,我們必須配置測試類以使用ColumnSensingReplacementDataSetLoader類加載DbUnit數據集。 因為我們已經使用@DbUnitConfiguration為測試類添加了注釋 ,所以我們必須將其loader屬性的值更改為ColumnSensingReplacementDataSetLoader.class 。

    固定測試類的源代碼如下所示:

    import com.github.springtestdbunit.DbUnitTestExecutionListener; import com.github.springtestdbunit.annotation.DatabaseSetup; import com.github.springtestdbunit.annotation.DbUnitConfiguration; import com.github.springtestdbunit.annotation.ExpectedDatabase; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestExecutionListeners; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; import org.springframework.test.context.support.DirtiesContextTestExecutionListener; import org.springframework.test.context.transaction.TransactionalTestExecutionListener;import static org.assertj.core.api.Assertions.assertThat;@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {PersistenceContext.class}) @TestExecutionListeners({ DependencyInjectionTestExecutionListener.class,DirtiesContextTestExecutionListener.class,TransactionalTestExecutionListener.class,DbUnitTestExecutionListener.class }) @DbUnitConfiguration(dataSetLoader = ColumnSensingReplacementDataSetLoader.class) public class ITTodoRepositoryTest {private static final String DESCRIPTION = "description";private static final String TITLE = "title";@Autowiredprivate TodoRepository repository;@Test@DatabaseSetup("no-todo-entries.xml")@ExpectedDatabase("save-todo-entry-without-description-expected.xml")public void save_WithoutDescription_ShouldSaveTodoEntryToDatabase() {Todo todoEntry = Todo.getBuilder().title(TITLE).description(null).build();repository.save(todoEntry);} }

    其次 ,我們必須驗證是否將空值保存到todos表的description列中。 為此,我們可以向數據集中唯一的todos元素添加一個description屬性,并將description屬性的值設置為'[null]'。

    我們的固定數據集( save-todo-entry-without-description-expected.xml )如下所示:

    <dataset><todos id="1" description="[null]" title="title" version="0"/> </dataset>

    當我們運行集成測試時,它會通過。

    讓我們繼續并總結從這篇博客文章中學到的知識。

    摘要

    這篇博客文章教會了我們四件事:

    • DbUnit假定數據庫表僅包含從指定表行的列的第一個標記中找到的那些列。 如果要覆蓋此行為,則必須啟用DbUnit的列感測功能。
    • 如果要確保將null值保存到數據庫,則必須使用替換數據集。
    • 我們了解了如何創建自定義數據集加載器,該加載器創建替換數據集并使用列感測。
    • 我們了解了如何配置用于加載DbUnit數據集的數據集加載器。

    您可以從Github獲得此博客文章的示例應用程序 。

    翻譯自: https://www.javacodegeeks.com/2014/11/spring-from-the-trenches-using-null-values-in-dbunit-datasets.html

    總結

    以上是生活随笔為你收集整理的摆脱困境:在DbUnit数据集中使用空值的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    国产一级片直播 | 在线视频第一页 | 国产免费中文字幕 | 激情综合色播五月 | 中文在线www| 永久免费在线 | 国产一级大片免费看 | 日韩手机视频 | 精品国产免费av | 青青草国产免费 | 久久久国产成人 | 操操色 | 亚洲成人av在线 | 91黄色在线视频 | 久久久久免费精品国产 | 免费涩涩网站 | 91av欧美 | 很污的网站 | 波多野结衣视频一区二区三区 | 91免费看黄色 | 在线观看日韩视频 | 操操操日日 | 中文字幕观看在线 | 五月开心网 | www.夜夜爱 | 999久久久久久久久 69av视频在线观看 | 最近中文字幕完整视频高清1 | 久久久久国产一区二区三区 | 黄色片视频免费 | 高清国产在线一区 | www.色国产| 女人高潮特级毛片 | 欧美91精品| 又大又硬又黄又爽视频在线观看 | 激情久久久久久久久久久久久久久久 | 欧美性色综合网站 | 色网址99| 一区二区三区久久精品 | 高清在线一区 | 精品一区二区久久久久久久网站 | 亚洲欧美国产精品va在线观看 | 天天干夜夜爽 | 精品国偷自产在线 | 精品久久久久久久久亚洲 | 久草电影网| 精品国产一区二区久久 | 国产一级片免费播放 | 久久婷五月 | 国产精品久久久区三区天天噜 | 国产黄色片网站 | 2019中文字幕网站 | 免费观看十分钟 | 91福利免费| 美女网站在线播放 | 日本中文字幕高清 | 国内三级在线 | 日韩在线观看av | 色之综合网| 久久9999久久免费精品国产 | 91av在线视频免费观看 | 国产精品久久久久久久久久久免费看 | 中文在线免费观看 | 国产视频一区二区在线观看 | 三级大片网站 | 999久久久久久久久6666 | 人人精久 | 精品在线观看一区二区 | 四虎在线视频免费观看 | 91在线日韩| 久久日韩精品 | 亚洲视频在线观看 | 午夜狠狠操 | 日本久久综合网 | 亚洲黄网站 | 亚洲精品1区2区3区 超碰成人网 | 高清免费在线视频 | 日韩av资源在线观看 | 亚洲精品视频网址 | 日韩在线高清免费视频 | 亚洲精品国产精品国自产观看浪潮 | 日韩视频在线播放 | 国产精品手机在线 | 天天插综合 | 狠狠综合网 | 精品一区二区在线观看 | 久久视频精品在线观看 | 91av视频网站| 四虎成人网 | 亚洲精品在线免费播放 | 麻花天美星空视频 | 丁香 久久 综合 | 99久视频| 日韩精品免费在线观看 | 国产午夜精品一区二区三区四区 | 午夜成人免费影院 | 西西4444www大胆视频 | 久99精品 | 国产资源在线观看 | 天天干天天摸天天操 | 精品福利网 | 精品国产综合区久久久久久 | 欧美日韩性视频 | 欧美激情va永久在线播放 | 99国产成+人+综合+亚洲 欧美 | 久久综合狠狠综合久久狠狠色综合 | 欧美日韩中文国产一区发布 | www.夜色.com| 欧美精品天堂 | 综合色播 | 特级西西人体444是什么意思 | 国产综合视频在线观看 | 天天干天天色2020 | 黄色在线网站噜噜噜 | 国产精品久久久久久高潮 | 久久免费视频国产 | 国产在线不卡视频 | 久久精品一区 | 欧美一区二区三区免费观看 | 免费看v片网站 | 成人黄色小说在线观看 | 久久婷婷国产色一区二区三区 | 午夜在线看 | 美女视频一区 | 午夜婷婷在线观看 | 国产精品专区在线观看 | 日韩欧美一区二区三区视频 | 国产欧美日韩精品一区二区免费 | 国产黄色免费观看 | 国产精品二区在线观看 | 在线国产视频一区 | 97国产情侣爱久久免费观看 | 不卡视频一区二区三区 | 92中文资源在线 | 中午字幕在线观看 | 婷婷综合亚洲 | 国产喷水在线 | 久久久国内精品 | 五月婷婷色| 久久99精品国产91久久来源 | 婷婷综合av| 91av蜜桃| 国产高清av免费在线观看 | av黄色在线观看 | 欧美一级视频免费 | 欧美91成人网 | 中文字幕在线一二 | 夜色资源站国产www在线视频 | 日韩一区二区免费播放 | 久久99爱视频 | 91最新地址永久入口 | 国产视频在线免费观看 | 日韩av免费观看网站 | 国产精品自产拍在线观看中文 | 成片免费观看视频大全 | 91视频中文字幕 | 免费观看十分钟 | 国产麻豆精品95视频 | 天天操天天透 | 久久久久免费精品国产 | 最近更新中文字幕 | 五月婷婷综合在线 | 69久久夜色精品国产69 | 亚洲人成在线观看 | 欧美黄在线 | 国产 亚洲 欧美 在线 | 免费在线观看一区 | 麻豆久久精品 | av在线播放国产 | 国产精品毛片 | 亚洲最大成人免费网站 | 国产黄大片在线观看 | 一区二区伦理 | 992tv在线成人免费观看 | 视频国产在线 | 91视频91自拍 | 久久久国际精品 | 少妇av片 | 天天艹天天操 | 黄色成人91 | 丁香婷婷激情 | 国产 日韩 中文字幕 | 色多多污污在线观看 | 五月天高清欧美mv | 色欧美成人精品a∨在线观看 | 国产在线播放一区二区三区 | 日韩免费看的电影 | 96久久欧美麻豆网站 | 久久在线精品 | 黄色片视频在线观看 | 久久色视频 | 亚洲黄色片在线 | 国产美女精彩久久 | 亚洲国产精品va在线看黑人动漫 | av中文在线影视 | 国产中文视| 中文网丁香综合网 | 欧美精品v国产精品v日韩精品 | 人人看人人草 | 国产精品ⅴa有声小说 | www.97视频| 成人激情开心网 | 人人插人人做 | 在线激情av电影 | 欧美性做爰猛烈叫床潮 | 国产无区一区二区三麻豆 | 97在线观看免费视频 | 成人午夜久久 | 在线观看视频亚洲 | 国产91在线观 | 狠狠成人| 日韩视频在线不卡 | 99这里只有精品视频 | 成人一区影院 | 天天爱天天射天天干天天 | 欧美日韩一区二区免费在线观看 | 欧美一区二区视频97 | 国产成人av免费在线观看 | 久久九九影院 | 国产涩涩在线观看 | 91av视频导航 | 韩日av一区二区 | 日韩高清毛片 | 99久久精品国产欧美主题曲 | 黄色成人在线 | 国产精品欧美久久久久久 | 色吊丝在线永久观看最新版本 | 99视频在线精品免费观看2 | 成人小视频在线观看免费 | 国产精品免费观看久久 | 亚洲精品麻豆 | 欧美少妇xxxxxx| 久久精品永久免费 | 99热手机在线观看 | 亚洲精品视频在线播放 | 成人av一区二区三区 | 免费精品视频 | 国产日韩欧美在线一区 | 久久免费精品 | 精品亚洲va在线va天堂资源站 | 人人澡人人爱 | 亚洲日日射 | 中文国产在线观看 | 欧美日韩亚洲在线观看 | 91资源在线观看 | 韩日精品中文字幕 | 久久永久视频 | 精品国产综合区久久久久久 | 97成人精品 | 精品视频在线观看 | 成人在线免费av | 十八岁以下禁止观看的1000个网站 | 久久久久久高潮国产精品视 | 97人人澡人人爽人人模亚洲 | 在线观看成人 | 精品久久久久久久久久久久久久久久 | 国产亚洲午夜高清国产拍精品 | 在线观看黄网站 | av一本久道久久波多野结衣 | 久久老司机精品视频 | 久久九精品 | 西西www4444大胆在线 | 最新国产精品拍自在线播放 | 亚洲欧美久久 | 黄色三级免费片 | 色婷婷电影 | 欧美成人性网 | 亚洲成人999 | 国产精品激情偷乱一区二区∴ | 欧美在线视频不卡 | 丁香花在线视频观看免费 | 国产 字幕 制服 中文 在线 | 操综合| 午夜精品剧场 | 欧美日韩亚洲第一页 | 一区二区三区免费在线观看 | 国产精品a久久久久 | 国产精品video | 97超碰在线资源 | 99热 精品在线| 日韩欧美一区二区在线观看 | 99国内精品久久久久久久 | 国产精品2018 | 中文字幕的 | 在线探花 | 亚洲成人av影片 | 色丁香综合 | 精品国产伦一区二区三区观看方式 | 亚洲成熟女人毛片在线 | 天堂网一区二区 | 中文理论片 | 91最新网址 | 夜夜躁日日躁狠狠久久88av | 日p视频在线观看 | 日韩 在线观看 | 欧美一级大片在线观看 | 久久精品视频免费观看 | 欧美一级日韩三级 | 国产69精品久久久久久 | 久久久精品国产一区二区 | 黄色www免费| 伊人久久一区 | 一区二区三区电影大全 | 欧美电影在线观看 | 国产一级黄色电影 | 色视频在线 | 久久久久福利视频 | 最近中文字幕大全中文字幕免费 | 亚洲精品在线观看网站 | 国产精品久99 | 久久久久久久久网站 | 国产视频一级 | 国产又粗又硬又长又爽的视频 | 久久精品视频国产 | 亚洲精品乱码白浆高清久久久久久 | 9在线观看免费 | 成年人免费在线观看网站 | 亚洲v欧美v国产v在线观看 | 激情图片久久 | 91麻豆精品国产91久久久无需广告 | 99精品在线免费视频 | 亚洲精品免费播放 | 精品国产乱码久久久久久三级人 | 亚洲成人欧美 | 国产又黄又硬又爽 | 欧美色噜噜噜 | 狠狠综合久久 | 久久精品高清视频 | 精品视频一区在线 | 国产精品18久久久久久久久 | 色综合色综合色综合 | 国产69精品久久99不卡的观看体验 | 99热这里只有精品国产首页 | 在线a亚洲视频播放在线观看 | 91大神dom调教在线观看 | 欧美国产三区 | 特级大胆西西4444www | 久久久www成人免费精品张筱雨 | 91av视频 | 麻豆一精品传二传媒短视频 | 精品91| 国产精品免费在线播放 | 色99在线 | 激情综合五月天 | 超碰在线成人 | 狠狠狠色丁香综合久久天下网 | 高清av影院 | av福利超碰网站 | 久久国产剧场电影 | 成人免费在线观看入口 | 精品国产欧美一区二区三区不卡 | 99re视频在线观看 | 在线国产精品一区 | 免费91麻豆精品国产自产在线观看 | 91在线公开视频 | 亚洲精品成人在线 | 国产精品理论片在线播放 | 欧美成人日韩 | 色.com| 亚洲aⅴ在线 | 国产视频高清 | 免费视频成人 | 国产精品国产亚洲精品看不卡15 | 狠狠操天天射 | 91成人黄色 | 一级片在线 | 国产婷婷色 | av电影在线免费 | 久久免费在线 | 91精品国产高清自在线观看 | 欧洲精品视频一区 | 欧美日韩国产一区二 | 国产精品白浆视频 | 欧美一级淫片videoshd | 欧美日韩高清在线 | 99精品视频在线观看视频 | 国产精品va在线观看入 | 国产精品毛片久久久久久久久久99999999 | 亚洲精品美女久久17c | 97超碰在线免费 | www.激情五月.com| 综合色中色 | 国产精品久久久一区二区三区网站 | 成人xxxx | av 一区 二区 久久 | 国产一级片免费播放 | 成人黄色在线观看视频 | 精品一区 精品二区 | 国产精品久久一区二区无卡 | 九九综合九九 | 一级c片 | 日日夜夜91 | 四虎成人精品 | 四虎影视成人永久免费观看亚洲欧美 | 精品国产_亚洲人成在线 | 国产精品99久久久久人中文网介绍 | 亚洲精品久久在线 | 免费婷婷 | 深夜福利视频一区二区 | 91探花国产综合在线精品 | 在线观看国产亚洲 | 91久久精品一区二区三区 | 久九视频 | 国产精品一区二区三区久久 | www91在线观看| 精品9999| 91一区啪爱嗯打偷拍欧美 | 国产精品资源网 | www黄色 | 国产精品av一区二区 | 久久精品亚洲综合专区 | 91黄色免费看| 久久婷亚洲五月一区天天躁 | 免费a v在线| 人人爽人人爽人人爽 | 亚洲高清网站 | 一区二三国产 | 精品视频久久 | 在线国产黄色 | 亚洲成av人片在线观看www | 成人免费一区二区三区在线观看 | 亚洲午夜电影网 | 在线观看黄av | 在线免费色| 久久午夜免费观看 | 贫乳av女优大全 | 免费观看成人av | 在线观看日韩国产 | 久久伊人八月婷婷综合激情 | 亚洲伦理一区二区 | 西西www4444大胆视频 | 国产91对白在线 | 毛片无卡免费无播放器 | 日韩av在线免费播放 | 国产精品视频永久免费播放 | 国产系列在线观看 | 日韩午夜精品 | 88av网站 | 香蕉看片 | 国产免费不卡av | 国产色在线 | 日韩精品播放 | 国产精品正在播放 | 99久久精品久久久久久清纯 | 丁香激情综合国产 | 免费视频在线观看网站 | 五月婷婷在线综合 | 波多野结衣亚洲一区二区 | 久久人人爽人人爽 | 久久男人影院 | 就要色综合 | 成年人三级网站 | 中文字幕av日韩 | 五月天天色 | 亚洲精品免费视频 | 婷婷久操| 西西4444www大胆视频 | 婷婷网在线 | 日韩欧美精品在线视频 | 99精品视频一区 | 2019免费中文字幕 | 国产亚洲视频中文字幕视频 | 国产片免费在线观看视频 | 国产二区电影 | 日韩高清一 | 在线只有精品 | 免费看色视频 | 国产123区在线观看 国产精品麻豆91 | 亚洲日韩中文字幕在线播放 | 欧美色插 | 久精品在线观看 | 人人讲下载 | 日日碰狠狠添天天爽超碰97久久 | www成人精品| 日韩视频图片 | 精品视频成人 | 成人亚洲免费 | 久草久草视频 | 婷婷伊人网 | 久久免费黄色网址 | 国产精品一区二区 91 | 日韩精品视频一二三 | 懂色av一区二区三区蜜臀 | 高清视频一区 | 中文字幕在线观看完整 | 嫩草91影院 | 欧美在线91 | 免费在线看成人av | 精品一区精品二区高清 | 521色香蕉网站在线观看 | 韩国精品福利一区二区三区 | 在线 国产 亚洲 欧美 | 久久网页| 中文字幕在线播放日韩 | 中文字幕色播 | 黄色毛片视频免费观看中文 | 少妇bbb搡bbbb搡bbbb′ | 91色国产 | 国产伦精品一区二区三区无广告 | 亚洲第一av在线 | 欧美日韩久久不卡 | 欧美一级黄大片 | 国产成在线观看免费视频 | 国产高清视频 | 在线看v片成人 | 国产一区黄色 | 久久人人爽人人爽人人片av软件 | 444av| 国产美女免费视频 | 伊人婷婷网| 成人免费观看视频大全 | 国产在线一区观看 | 中文字幕在线日本 | 全久久久久久久久久久电影 | 天天操网站 | 久久美女精品 | 中文字幕资源网 | 国产一级片久久 | 欧美吞精| 五月天综合激情 | av综合av| 亚洲午夜精品一区二区三区电影院 | 黄色片视频在线观看 | 久久综合狠狠综合久久狠狠色综合 | 免费中午字幕无吗 | 国产精品美女久久久久久久久久久 | 亚洲精品一区二区精华 | 久久男女视频 | 久久激情影院 | 久草在线手机观看 | 中文字幕在线日本 | 免费视频你懂得 | 99久久电影 | 精品久久久免费 | 91亚洲欧美激情 | 三上悠亚一区二区在线观看 | 国产精品99久久久久人中文网介绍 | 欧美一区中文字幕 | 国产精品久久久久999 | 国产精品久久久久久久婷婷 | 国产精彩在线视频 | 国产精品久久久影视 | 天天狠狠| 国产乱对白刺激视频不卡 | 91精品蜜桃 | 日本福利视频在线 | 日韩黄色一区 | 国产精品免费观看国产网曝瓜 | 久久国产精品久久久 | 久久久黄色av| 福利久久| 国产超碰97 | 欧美日韩精品影院 | 亚洲精品免费在线观看 | 亚洲一区二区三区miaa149 | 国产精品美女久久久久久网站 | 久久国产美女视频 | 久久亚洲区| 天天射综合网视频 | 日韩福利在线观看 | 在线中文字幕观看 | 亚洲综合在线播放 | 精品久久网 | 99精品视频在线 | 一区二区三区电影大全 | 久久精品99精品国产香蕉 | 激情五月激情综合网 | 婷婷丁香六月 | 99精品视频网站 | 黄网站大全 | 久久黄色网址 | 91av精品 | 国产一区av在线 | 欧美激精品 | 青青河边草免费观看 | 免费黄色a网站 | 特级西西444www大胆高清无视频 | 日韩一区二区三区在线看 | 国产成人精品女人久久久 | www日韩精品 | 91探花国产综合在线精品 | 国产1区在线 | bayu135国产精品视频 | 干干干操操操 | 丁香婷婷综合五月 | 不卡av电影在线观看 | 国产一级视频在线 | 久久国产精品视频 | 日韩高清精品免费观看 | 国产精品久久一区二区三区, | 日韩在线观看小视频 | 久久精品91久久久久久再现 | 免费视频黄色 | 午夜视频一区二区 | 日韩丝袜在线 | 夜色资源网 | 成人黄色小说视频 | 91精品资源 | 亚洲精品国产成人 | 一级成人网 | 18av在线视频| 天天操夜夜想 | 久9在线 | 麻豆传媒视频在线播放 | 99视频免费观看 | 日日爱网站 | 久久久免费看片 | 天天色天天射天天综合网 | 激情婷婷在线 | 69国产精品成人在线播放 | 27xxoo无遮挡动态视频 | 91视频午夜| 欧美精品一区在线 | 中文字幕在线有码 | 久久久久久久毛片 | 日韩av影视在线 | 91精品国产一区二区三区 | 色婷婷久久久综合中文字幕 | 日韩一级黄色av | 日韩福利在线观看 | 天堂久色 | 一区二区国产精品 | 免费色网 | 国内成人精品2018免费看 | av电影在线免费观看 | 91av在线免费观看 | www黄免费| 国产精品一区欧美 | 欧日韩在线视频 | 色偷偷88888欧美精品久久久 | 中国一 片免费观看 | 国产精品9区| 久久久福利影院 | 成人午夜精品久久久久久久3d | 久久99精品久久久久久 | 99在线高清视频在线播放 | 中文字幕在线播放视频 | 国产黄色免费在线观看 | 欧美大片www | 麻豆传媒在线免费看 | x99av成人免费 | 五月婷婷开心 | 亚洲激情 在线 | 又黄又爽又刺激的视频 | 黄色av播放 | 亚洲男男gaygay无套同网址 | 狠狠色丁香婷婷综合 | 成人黄色免费在线观看 | 亚洲女同ⅹxx女同tv | 久久久久久久久久久久久久免费看 | 99色国产| 中文字幕欧美日韩va免费视频 | 国产精品一区二区av影院萌芽 | 久艹在线免费观看 | 伊人色综合久久天天 | 狠狠色免费| 欧美精品久久久久久久久免 | 成人精品电影 | 日韩激情小视频 | 亚洲国产人午在线一二区 | 青青河边草免费直播 | 欧美 日韩 国产 中文字幕 | 久草在线免费新视频 | 亚州精品在线视频 | ,久久福利影视 | 香蕉在线视频观看 | 干干日日| 午夜在线免费观看视频 | 91精品视频导航 | 波多野结衣视频一区二区 | 毛片网站免费在线观看 | 久久国产免费看 | 亚洲视频h| 在线免费观看成人 | 国产中文字幕免费 | 偷拍视频一区 | 涩涩成人在线 | 午夜精品剧场 | 91精品视频免费观看 | 亚洲国产精品500在线观看 | 91免费观看视频在线 | 中文字幕在线观看网站 | 成年人黄色在线观看 | 福利片视频区 | 亚洲五月婷婷 | 色天堂在线视频 | 国产一区视频在线观看免费 | 欧美日韩伦理一区 | 天天操天天操天天操天天操天天操 | 久久精品在线免费观看 | 久久久国产成人 | 欧美一二区在线 | 免费看污片 | 4438全国亚洲精品观看视频 | 超碰人人在 | 免费av观看网站 | 日韩精品一区二区三区外面 | 国产一级片免费播放 | 亚洲天天在线日亚洲洲精 | 99精品国产99久久久久久97 | 国产欧美日韩精品一区二区免费 | 一级性av| 在线一二三区 | 免费黄色在线 | 久久精品成人欧美大片古装 | 激情综合网天天干 | 我要看黄色一级片 | 久久视频免费 | 亚洲免费精品视频 | 五月天天在线 | 天天操 夜夜操 | 人人视频网站 | 91视频在线免费看 | 午夜少妇一区二区三区 | 在线观看精品一区 | 久草在线视频精品 | 黄色成人在线观看 | 91免费看片黄 | 欧美日韩国产一区二区在线观看 | 久久精品在线免费观看 | 在线观看完整版免费 | 97手机电影网 | 在线观看国产日韩欧美 | 中文字幕国产在线 | 天天干,夜夜爽 | 天天色欧美 | 欧美日一级片 | 久久国产精品99久久人人澡 | 婷婷六月天综合 | 国产色啪| 黄色影院在线免费观看 | 亚洲成av人片在线观看香蕉 | 亚洲黄色在线 | 亚洲国产中文字幕在线观看 | 伊人激情网 | 久久字幕 | 久精品在线观看 | 91在线色 | 亚洲精品国产精品国自产在线 | 国产日产欧美在线观看 | 精品国产一区二区三区av性色 | 色五丁香| 丝袜美腿一区 | 韩日电影在线 | 91女子私密保健养生少妇 | 中文字幕乱码日本亚洲一区二区 | 久久婷婷激情 | 一区 二区电影免费在线观看 | 最新中文字幕在线观看视频 | 国产专区欧美专区 | 337p日本大胆噜噜噜噜 | 果冻av在线 | 免费在线观看日韩视频 | 精品国产乱码久久久久久三级人 | 在线观看黄a | 亚洲福利精品 | 久久久久久久久久久久久国产精品 | 99久e精品热线免费 99国产精品久久久久久久久久 | 免费在线黄色av | 久章草在线观看 | 999久久国产精品免费观看网站 | 涩涩爱夜夜爱 | 中文字幕在线观看不卡 | 国产网站av | 91视频这里只有精品 | 久久国产精品久久久久 | 亚洲精品91天天久久人人 | 97香蕉超级碰碰久久免费软件 | 成人av在线看 | 在线观看你懂的网址 | 天天曰天天爽 | 久久精品美女视频网站 | 高潮毛片无遮挡高清免费 | 在线看黄网站 | 99精品久久99久久久久 | 精品专区一区二区 | 在线观看av片 | 国产又粗又猛又黄 | 日韩黄色软件 | 天天亚洲| 国产亚洲精品久久久久久网站 | 日韩久久网站 | 91在线产啪 | 久久午夜精品影院一区 | 欧美美女激情18p | 国产精品久久久久久久久久久杏吧 | 在线观看国产日韩欧美 | 久久久国内精品 | 国产无遮挡又黄又爽馒头漫画 | 人人爽人人爽人人爽学生一级 | 91人人插| 久久免费国产精品1 | 午夜12点 | 人人看人人做人人澡 | 亚洲激情 在线 | 精品播放 | 日韩精品不卡在线 | 狠狠gao | 日本在线视频一区二区三区 | 成人性生交大片免费观看网站 | 免费av看片 | 中文字幕色综合网 | 精品国产一区二区三区久久影院 | 国产精品乱码久久久 | 亚洲精品电影在线 | 就要干b| 中文字幕一区二区三区乱码在线 | 国产青青青| 久久a级片 | 国产一在线精品一区在线观看 | 免费看91的网站 | 亚洲精品影院在线观看 | 国产精品自在欧美一区 | 狠狠操狠狠插 | 久久精品女人毛片国产 | av性在线| bbbb操bbbb| 精品久久久久久久久久久久 | 天堂av免费观看 | 91激情视频在线 | 99热在线观看免费 | 超碰免费久久 | 久久免费高清 | 久久久久在线视频 | 亚洲一区二区三区精品在线观看 | 天天色成人网 | 在线亚洲高清视频 | 毛片网在线播放 | 国产人免费人成免费视频 | 免费网站v| 免费在线观看av网址 | 亚洲电影免费 | 97超碰福利久久精品 | 男女全黄一级一级高潮免费看 | 久久影院一区 | 在线观看岛国 | 国产美女精品 | 欧美久草视频 | 99国产精品 | 成人免费网站视频 | 日本一区二区不卡高清 | 国产高清在线永久 | 中日韩欧美精彩视频 | 91精品国 | 午夜精品999 | 国产精品1000 | 日韩视频在线观看免费 | 国产99久久九九精品免费 | 成人a视频在线观看 | 国产日韩精品久久 | 久久久亚洲国产精品麻豆综合天堂 | 久久在线视频在线 | 丁香六月婷婷开心婷婷网 | 日韩网站视频 | 日韩伦理片一区二区三区 | 天操夜夜操 | 夜夜夜影院 | 91精品免费在线 | 91麻豆精品一区二区三区 | 日本精品视频在线 | 中文理论片 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲成人精品av | 久久久久久国产精品999 | 日韩欧美一区二区在线播放 | 999热线在线观看 | 久久久香蕉视频 | 五月婷婷毛片 | 久操中文字幕在线观看 | 久久高视频| 天天色天天综合 | 婷婷视频在线观看 | 国产精品第72页 | 欧美日韩视频免费 | 欧美老女人xx | 中文字幕最新精品 | 99久久精品日本一区二区免费 | 香蕉视频网站在线观看 | 国产精品激情在线观看 | 国产福利91精品一区二区三区 | 国产精品毛片一区二区在线 | 久久精品视频中文字幕 | 婷婷综合成人 | 久久不卡免费视频 | 国产一区二区三区在线免费观看 | 亚洲理论在线观看 | 亚洲成人精品影院 | 欧美激精品 | 成人黄色小说网 | 麻豆一区二区三区视频 | 日本久久久久久久久 | 国产精品久久久久久久久毛片 | www激情网| 久久久免费精品国产一区二区 | 欧美黑人xxxx猛性大交 | 成人欧美一区二区三区在线观看 | 日韩最新中文字幕 | 一区二区三区污 | 日韩理论视频 | 午夜日b视频 | 国产午夜免费视频 | 婷婷激情在线观看 | 久久久精品综合 | 午夜色影院| 亚洲深夜影院 | 国产999精品视频 | 国产69精品久久99不卡的观看体验 | 国产亚洲免费的视频看 | 亚洲国产影院av久久久久 | 中文字幕人成乱码在线观看 | 久久久视频在线 | 91久久久久久久一区二区 | 天天操天天干天天操天天干 | 免费在线看成人av | 成人免费网视频 | 国产精品v欧美精品v日韩 | 91精品一区二区三区蜜桃 | 4438全国亚洲精品在线观看视频 | 日韩国产精品毛片 | 久久99国产精品久久99 | 美女视频网站久久 | 最新av在线免费观看 | 久久视频免费观看 | 青青草国产成人99久久 | 99精品国产福利在线观看免费 | 中文在线亚洲 | 国产精品正在播放 | 国产精品女主播一区二区三区 | 国产一级视频 | 欧美黑人性爽 | 在线成人一区二区 | 最近更新的中文字幕 | 国产又粗又猛又黄又爽视频 | 97超碰中文字幕 | 美女在线免费观看视频 | 亚洲 中文 在线 精品 | 国产在线视频在线观看 | 久草在线手机视频 | 美女网站黄免费 | 99r在线播放 | 久久视频这里有精品 | 蜜臀一区二区三区精品免费视频 | 婷婷激情站 | 国产亚洲va综合人人澡精品 | 日韩av一区二区在线影视 | 在线观看视频在线观看 | 日本久久免费电影 | 午夜久久电影网 | 久久精品国产久精国产 | 欧美做受高潮 | 国产精品久久久区三区天天噜 | 国产女v资源在线观看 | 黄色三级在线观看 | 久久久久久精 | 国产亚洲精品福利 | 国产精品视频专区 | 黄色a级片在线观看 | 久草视频在线播放 | 91久久久久久久 | 在线观看完整版免费 | 久青草电影 | 亚洲国产午夜视频 | 日韩免费高清 | 久久综合给合久久狠狠色 | 久久久久电影网站 | 色大片免费看 | 91视频观看免费 | 最新极品jizzhd欧美 | 五月婷婷中文 | 精品国产美女 | 国产中的精品av小宝探花 | 国产精品伦一区二区三区视频 | 一区二区高清在线 | 国产91免费看| 国产福利一区二区在线 | 久久午夜剧场 | 日韩精品一区二区在线观看视频 | 日韩在线观看的 | 国内久久视频 | 日韩av在线看 | 亚洲激情综合 | 91理论片午午伦夜理片久久 | 午夜色站| 天堂av在线网址 | 国产精品美女毛片真酒店 | 91亚洲狠狠婷婷综合久久久 | 91精品国产乱码在线观看 | 麻花豆传媒mv在线观看 | 在线黄色免费av | 欧美精品久久人人躁人人爽 | 黄色av观看| 亚洲91中文字幕无线码三区 | 手机av在线网站 | 日韩在线网 | 一区二区三区在线电影 | 久久99久久久久久 | 色窝资源 | 免费观看十分钟 | 韩国av一区二区三区在线观看 |