国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

一款自動(dòng)生成單元測(cè)試的 IDEA 插件

共 11005字,需瀏覽 23分鐘

 ·

2022-05-13 01:16

往期熱門文章:
1、微軟 10 大最受歡迎 GitHub 項(xiàng)目,最高 Star 數(shù)量 13 萬(wàn)
2、Spring Boot 中實(shí)現(xiàn)跨域的 5 種方式,你一定要知道!
3、Java反射到底慢在哪?
4、多線程批量拆分 List 導(dǎo)入數(shù)據(jù)庫(kù)!
5、IntelliJ IDEA 卡成了球?

來(lái)源:?blog.csdn.net/sun5769675/article/details/111043213

??
? 今天來(lái)介紹一款工具Squaretest,它是一款自動(dòng)生成單元測(cè)試的插件,為什么會(huì)用到它?

主要因?yàn)樽罱旧狭舜a質(zhì)量管控的指標(biāo),會(huì)考評(píng)各個(gè)項(xiàng)目的單元測(cè)試覆蓋率,以及sonar掃描出來(lái)的各種問(wèn)題,很多老項(xiàng)目老代碼,或者著急交付的項(xiàng)目,單元測(cè)試嚴(yán)重缺失,覆蓋率只有5%不到。

所以幾個(gè)小伙伴這幾天就在瘋狂的堆單元測(cè)試,3個(gè)人堆了2天才堆到30%,于是我也來(lái)上手幫忙寫了兩個(gè),寫到第二個(gè)的時(shí)候就發(fā)現(xiàn),這個(gè)活不應(yīng)該是人干的,要去看原來(lái)的代碼,然后根據(jù)邏輯寫各種Mock,感覺(jué)是有跡可循的東西,所以就查了下,發(fā)現(xiàn)果然有插件幫我們來(lái)干這個(gè)事情,那么解下來(lái)就來(lái)看看。

我使用的是idea,我們先來(lái)下載一下插件,File——>Settings——>Plugins,搜索Squaretest,然后install就好了,插件安裝完成后需要重啟一下

重啟之后,菜單欄就多了一項(xiàng)Squaretest,下面我們來(lái)講下怎么用,大家也可以通過(guò)看這個(gè)菜單的最后一項(xiàng):Generate Test Methods(Help)來(lái)看它的一個(gè)演示,但演示不太全,我下面截圖給大家看下我怎么用的,以及一些使用心得。


首先我們打開(kāi)一個(gè)類,這個(gè)類就是我們即將要作為實(shí)驗(yàn)的類,這個(gè)類有7個(gè)public方法,因?yàn)?/span>Squaretest生成的單元測(cè)試方法都是只能生成public的,當(dāng)然這也是合理的嘛!畢竟private的肯定被public調(diào)用了。


如果我們來(lái)手寫這個(gè)類的單元測(cè)試,光看都要一會(huì),下面看我操作,打開(kāi)你的類,光標(biāo)定位到代碼里,右擊鼠標(biāo)選擇Generate…


然后你就會(huì)看到這里有兩個(gè)熟悉的圖標(biāo),第一次的話選擇第二個(gè)選項(xiàng),它會(huì)讓你選擇你一下單元測(cè)試的模板,因?yàn)槲乙呀?jīng)選擇過(guò)了,所以我現(xiàn)在演示不回再?gòu)棾?,但后面我?huì)告訴你怎么更改模板。


選擇第二項(xiàng)后就會(huì)彈出一個(gè)框看下面這里它自動(dòng)會(huì)識(shí)別出當(dāng)前類需要Mock的成員變量,直接點(diǎn)ok


自動(dòng)會(huì)使用類的真實(shí)目錄層次在test文件夾中創(chuàng)建出來(lái)一個(gè)單元測(cè)試類,類名就是原類名后加Test


我把代碼貼出來(lái)給大家看看它生成出來(lái)的是什么樣的,看看嚇不嚇人,牛逼牛逼,7個(gè)單元測(cè)試方法,秒秒鐘就出來(lái)了,各位看官你們自己寫要多久能寫出來(lái),畢竟時(shí)間就是金錢??!然后我們執(zhí)行一把試試!

public?class?CrawlerScreenShotServiceImplTest?{

????@Mock
????private?CrawerScreenShotTaskMapper?mockCrawerScreenShotTaskMapper;
????@Mock
????private?CrawerScreenShotTaskLogMapper?mockCrawerScreenShotTaskLogMapper;

????@InjectMocks
????private?CrawlerScreenShotServiceImpl?crawlerScreenShotServiceImplUnderTest;

????@Before
????public?void?setUp()?{
????????initMocks(this);
????}

????@Test
????public?void?testReceiveData()?{
????????//?Setup
????????final?CrawlerScreenShotVO?vo?=?new?CrawlerScreenShotVO();
????????vo.setUrl("url");
????????vo.setPcFlag(false);
????????vo.setMembergroup("membergroup");
????????vo.setTaskType(0);
????????vo.setUrlType(0);

????????when(mockCrawerScreenShotTaskLogMapper.saveSelective(any(CrawerScreenShotTaskLog.class))).thenReturn(0);
????????when(mockCrawerScreenShotTaskMapper.saveBatch(Arrays.asList(new?CrawlerScreenShotTask(0L,?"url",?"imageOssUrl",?false,?false,?"memberGroup",?0,?0,?"fileName",?new?GregorianCalendar(2019,?Calendar.JANUARY,?1).getTime(),?new?GregorianCalendar(2019,?Calendar.JANUARY,?1).getTime(),?false,?"skuCode",?"state",?"operater")))).thenReturn(0);

????????//?Run?the?test
????????final?Result?result?=?crawlerScreenShotServiceImplUnderTest.receiveData(vo);

????????//?Verify?the?results
????}

????@Test
????public?void?testListJobScreenShotTask()?{
????????//?Setup

????????//?Configure?CrawerScreenShotTaskMapper.listJobScreenShotTask(...).
????????final?CrawlerScreenShotTaskDto?crawlerScreenShotTaskDto?=?new?CrawlerScreenShotTaskDto();
????????crawlerScreenShotTaskDto.setId(0L);
????????crawlerScreenShotTaskDto.setUrl("url");
????????crawlerScreenShotTaskDto.setSkuCode("skuCode");
????????crawlerScreenShotTaskDto.setPcFlag(false);
????????crawlerScreenShotTaskDto.setMemberGroup("memberGroup");
????????crawlerScreenShotTaskDto.setUrlType(0);
????????crawlerScreenShotTaskDto.setFileName("fileName");
????????crawlerScreenShotTaskDto.setTaskType(0);
????????crawlerScreenShotTaskDto.setState("state");
????????final?List?crawlerScreenShotTaskDtos?=?Arrays.asList(crawlerScreenShotTaskDto);
????????when(mockCrawerScreenShotTaskMapper.listJobScreenShotTask(new?GregorianCalendar(2019,?Calendar.JANUARY,?1).getTime())).thenReturn(crawlerScreenShotTaskDtos);

????????//?Run?the?test
????????final?List?result?=?crawlerScreenShotServiceImplUnderTest.listJobScreenShotTask();

????????//?Verify?the?results
????}

????@Test
????public?void?testQuery()?{
????????//?Setup
????????final?NikeScreenShotListRequestVo?requestVo?=?new?NikeScreenShotListRequestVo();
????????requestVo.setUrl("url");
????????requestVo.setUrlType(0);
????????requestVo.setStartTime(new?GregorianCalendar(2019,?Calendar.JANUARY,?1).getTime());
????????requestVo.setEndTime(new?GregorianCalendar(2019,?Calendar.JANUARY,?1).getTime());
????????requestVo.setStatus(0);
????????requestVo.setPcFlag(0);
????????requestVo.setPageNum(0);
????????requestVo.setPageSize(0);

????????//?Configure?CrawerScreenShotTaskMapper.query(...).
????????final?PimScreenShotVo?pimScreenShotVo?=?new?PimScreenShotVo();
????????pimScreenShotVo.setId(0L);
????????pimScreenShotVo.setUrl("url");
????????pimScreenShotVo.setImageOssUrl("imageOssUrl");
????????pimScreenShotVo.setStatus(0);
????????pimScreenShotVo.setPcFlag(false);
????????pimScreenShotVo.setCreateTime(new?GregorianCalendar(2019,?Calendar.JANUARY,?1).getTime());
????????pimScreenShotVo.setUrlType(0);
????????pimScreenShotVo.setMsg("msg");
????????final?List?pimScreenShotVos?=?Arrays.asList(pimScreenShotVo);
????????when(mockCrawerScreenShotTaskMapper.query(any(NikeScreenShotListRequestVo.class))).thenReturn(pimScreenShotVos);

????????//?Run?the?test
????????final?PageInfo?result?=?crawlerScreenShotServiceImplUnderTest.query(requestVo);

????????//?Verify?the?results
????}

????@Test
????public?void?testQuerySelectBoxData()?{
????????//?Setup

????????//?Configure?CrawerScreenShotTaskMapper.query(...).
????????final?PimScreenShotVo?pimScreenShotVo?=?new?PimScreenShotVo();
????????pimScreenShotVo.setId(0L);
????????pimScreenShotVo.setUrl("url");
????????pimScreenShotVo.setImageOssUrl("imageOssUrl");
????????pimScreenShotVo.setStatus(0);
????????pimScreenShotVo.setPcFlag(false);
????????pimScreenShotVo.setCreateTime(new?GregorianCalendar(2019,?Calendar.JANUARY,?1).getTime());
????????pimScreenShotVo.setUrlType(0);
????????pimScreenShotVo.setMsg("msg");
????????final?List?pimScreenShotVos?=?Arrays.asList(pimScreenShotVo);
????????when(mockCrawerScreenShotTaskMapper.query(any(NikeScreenShotListRequestVo.class))).thenReturn(pimScreenShotVos);

????????//?Run?the?test
????????final?PimScreenShotTaskParamsDto?result?=?crawlerScreenShotServiceImplUnderTest.querySelectBoxData();

????????//?Verify?the?results
????}

????@Test
????public?void?testFindExecutionScreenShotTaskCount()?{
????????//?Setup
????????when(mockCrawerScreenShotTaskMapper.findExecutionScreenShotTaskCount()).thenReturn(0);

????????//?Run?the?test
????????final?Integer?result?=?crawlerScreenShotServiceImplUnderTest.findExecutionScreenShotTaskCount();

????????//?Verify?the?results
????????assertEquals(0,?result);
????}

????@Test
????public?void?testFindCrawerScreenshotTaskByCreateTime()?{
????????//?Setup
????????final?CrawlerScreenShotTaskSyncDto?crawlerScreenShotTaskSyncDto?=?new?CrawlerScreenShotTaskSyncDto();
????????crawlerScreenShotTaskSyncDto.setId(0L);
????????crawlerScreenShotTaskSyncDto.setUrl("url");
????????crawlerScreenShotTaskSyncDto.setSkuCode("skuCode");
????????crawlerScreenShotTaskSyncDto.setTaskType(0);
????????crawlerScreenShotTaskSyncDto.setStatus(0);
????????crawlerScreenShotTaskSyncDto.setLastModifyTime(new?GregorianCalendar(2019,?Calendar.JANUARY,?1).getTime());
????????crawlerScreenShotTaskSyncDto.setOperater("operater");
????????crawlerScreenShotTaskSyncDto.setMsg("msg");
????????final?List?expectedResult?=?Arrays.asList(crawlerScreenShotTaskSyncDto);

????????//?Configure?CrawerScreenShotTaskMapper.findCrawerScreenshotTaskByCreateTime(...).
????????final?CrawlerScreenShotTaskSyncDto?crawlerScreenShotTaskSyncDto1?=?new?CrawlerScreenShotTaskSyncDto();
????????crawlerScreenShotTaskSyncDto1.setId(0L);
????????crawlerScreenShotTaskSyncDto1.setUrl("url");
????????crawlerScreenShotTaskSyncDto1.setSkuCode("skuCode");
????????crawlerScreenShotTaskSyncDto1.setTaskType(0);
????????crawlerScreenShotTaskSyncDto1.setStatus(0);
????????crawlerScreenShotTaskSyncDto1.setLastModifyTime(new?GregorianCalendar(2019,?Calendar.JANUARY,?1).getTime());
????????crawlerScreenShotTaskSyncDto1.setOperater("operater");
????????crawlerScreenShotTaskSyncDto1.setMsg("msg");
????????final?List?crawlerScreenShotTaskSyncDtos?=?Arrays.asList(crawlerScreenShotTaskSyncDto1);
????????when(mockCrawerScreenShotTaskMapper.findCrawerScreenshotTaskByCreateTime(new?GregorianCalendar(2019,?Calendar.JANUARY,?1).getTime())).thenReturn(crawlerScreenShotTaskSyncDtos);

????????//?Run?the?test
????????final?List?result?=?crawlerScreenShotServiceImplUnderTest.findCrawerScreenshotTaskByCreateTime(new?GregorianCalendar(2019,?Calendar.JANUARY,?1).getTime());

????????//?Verify?the?results
????????assertEquals(expectedResult,?result);
????}

????@Test
????public?void?testQueryCrawlerDashboard()?{
????????//?Setup
????????when(mockCrawerScreenShotTaskMapper.queryCrawlerDashboard(0,?0,?0,?new?GregorianCalendar(2019,?Calendar.JANUARY,?1).getTime(),?new?GregorianCalendar(2019,?Calendar.JANUARY,?1).getTime())).thenReturn(0);

????????//?Run?the?test
????????final?Integer?result?=?crawlerScreenShotServiceImplUnderTest.queryCrawlerDashboard(0,?0,?0,?new?GregorianCalendar(2019,?Calendar.JANUARY,?1).getTime(),?new?GregorianCalendar(2019,?Calendar.JANUARY,?1).getTime());

????????//?Verify?the?results
????????assertEquals(0,?result);
????}
}

報(bào)錯(cuò)了呢,不要慌,這個(gè)斷言是為了檢查你單元測(cè)試跑出來(lái)的結(jié)果是否符合預(yù)期的,如果你不想檢查只想完成覆蓋率,直接干掉就可以了(手動(dòng)狗頭)。

怎么樣!刺不刺激,爽不爽,秒秒鐘90多行的代碼覆蓋率就到了90%以上.


上面說(shuō)過(guò)第一次進(jìn)來(lái)會(huì)讓你選擇單元測(cè)試的模板,如果你要切換的話可以在單元測(cè)試類中按快捷鍵,Alt+M,或者通過(guò)Squaretest的菜單倒數(shù)第二個(gè),下面這個(gè)就是按快捷鍵的效果,我選擇的是這個(gè)模板,你們也可以借鑒。


OK,以上Squaretest部分就結(jié)束了,當(dāng)然拉也不能高興的太早,這個(gè)類算是比較成功的情況,很多時(shí)候還是要你自己小修小改的,畢竟它生成出來(lái)的測(cè)試數(shù)據(jù)可能完全匹配不上你的if else數(shù)據(jù)對(duì)吧,但這都很好改啊,這樣就從自己分析if else變成了,debug程序了呀,哪里報(bào)錯(cuò),debug過(guò)去,看看是不是生成的數(shù)據(jù)有問(wèn)題,改個(gè)數(shù)據(jù),就通過(guò)了,反正本人用的是很舒暢的,妥妥的節(jié)省70%的工作量。

解決了上面一個(gè)問(wèn)題之后,又發(fā)現(xiàn)另一個(gè)問(wèn)題,這個(gè)工具VO,DTO,Entity,Command,Model這種實(shí)體類來(lái)講,一般這種實(shí)體類我們都用lombok的注解get,set,還有constract構(gòu)造器等注解,但是這個(gè)工具只能生成這些實(shí)體類的構(gòu)造器的單元測(cè)試,無(wú)法生成get set方法的單元測(cè)試,所以寫了個(gè)base方法,實(shí)體類繼承一下,簡(jiǎn)單的寫兩行帶就好了,看下面代碼:

@SpringBootTest
@RunWith(MockitoJUnitRunner.class)
public?abstract?class?BaseVoEntityTest<T>?
{
????protected?abstract?T?getT();

????private?void?testGetAndSet()?throws?IllegalAccessException,?InstantiationException,?IntrospectionException,
????????????InvocationTargetException?
{
????????T?t?=?getT();
????????Class?modelClass?=?t.getClass();
????????Object?obj?=?modelClass.newInstance();
????????Field[]?fields?=?modelClass.getDeclaredFields();
????????for?(Field?f?:?fields)?{
????????????boolean?isStatic?=?Modifier.isStatic(f.getModifiers());
????????????//?過(guò)濾字段
????????????if?(f.getName().equals("isSerialVersionUID")?||?f.getName().equals("serialVersionUID")?||?isStatic?||?f.getGenericType().toString().equals("boolean")
????????????????????||?f.isSynthetic())?{
????????????????continue;
????????????}
????????????PropertyDescriptor?pd?=?new?PropertyDescriptor(f.getName(),?modelClass);
????????????Method?get?=?pd.getReadMethod();
????????????Method?set?=?pd.getWriteMethod();
????????????set.invoke(obj,?get.invoke(obj));
????????}
????}

????@Test
????public?void?getAndSetTest()?throws?InvocationTargetException,?IntrospectionException,
????????????InstantiationException,?IllegalAccessException?
{
????????this.testGetAndSet();
????}

}

同樣的方式我們?cè)趯?shí)體類上通過(guò)Squaretest生成單元測(cè)試,然后繼承我上面寫的那個(gè)base類,vo的單元測(cè)試代碼稍加改動(dòng),如下

看run完之后,覆蓋率100%,妥妥的,通過(guò)這兩個(gè)解決方案,一天之內(nèi)我們就把覆蓋率搞到了60%以上,不要太刺激,大家可以用用試試哦,當(dāng)然這個(gè)也不是純?yōu)榱藨?yīng)付差事寫的單元測(cè)試,我們后續(xù)開(kāi)發(fā)的時(shí)候,也可以用這個(gè)工具來(lái)生成,然后自測(cè)自己的代碼,這樣也是提升工作效率的嘛!


最近熱文閱讀:

1、微軟 10 大最受歡迎 GitHub 項(xiàng)目,最高 Star 數(shù)量 13 萬(wàn)
2、Spring Boot 中實(shí)現(xiàn)跨域的 5 種方式,你一定要知道!
3、Mybatis批處理踩坑,糾正一些錯(cuò)誤寫法
4、Java 8?Java之父都不用!
5、生產(chǎn)環(huán)境,清理大文件不生效?應(yīng)該這樣做!
6、Nginx面試40問(wèn)
7、如何設(shè)計(jì) API 接口,實(shí)現(xiàn)統(tǒng)一格式返回?
8、竟然有一半的人不知道 for 與 foreach 的區(qū)別???
9、5 款頂級(jí) Docker GUI 工具!免費(fèi)又好用
10、解決 IDEA 占用大量 CPU 導(dǎo)致的卡頓問(wèn)題!
關(guān)注公眾號(hào),你想要的Java都在這里

瀏覽 82
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 日韩久久精品视频| 91在线无码精品秘入口| 亚洲成人久久久| 91人人人人| 你懂的在线免费观看| 吴梦梦一区二区在线观看| 日韩毛片| www.99| 人人天天操| 91在线免费播放| 91人妻人人人| 色婷婷亚洲色| 日韩顶级毛片| 天天看天天干| 成人做爰A片一区二区| 伊人久色| 99热免费观看| 国产免费高清视频| 亚洲性爱视频| 激情综合网站| 麻豆熟妇乱妇熟色A片在线看| 国产精品视频瘾无码| 国产又爽又黄免费视频免费观看| 蜜臀久久99精品久久久晴天影视| 国产伊人大香蕉| 亚洲无码精品一区二区| 成人在线A片| 97AV人妻无码视频二区| 另类老妇性BBwBBw图片| 色综合色综合色综合| 欧美一级A片免费看视频小说| 色五月婷婷丁香五月| av逼网| 成人毛片网站| 一级a片免费| 免费成人国产| 欧美91熟| 亚洲无码一级电影| 伊人成人大香蕉| 亚洲色色色| 91精品人妻一区二区三区四区| 成年人在线视频| av免费在线播放| 国产成人一级片| 在线观看av网站| 婷婷五月成人| 密桃视频网站| 奇米狠狠777| 免费在线国产| 国产色秘乱码一区二区三区| 亚洲视频在线免费观看| 亚洲精品99| 操BAV| 日韩性爱AV| 白嫩在线| 久久一区二区三区四区五区| 五月丁香视频在线观看| 色国产在线视频| 天堂网2018| 五月天国产视频| 欧美日韩四区| 亚洲AV高清无码| 久久久久久久久免费看无码| 亚洲熟妇无码| 成人在线h| 久久久久无码| 日韩免费黄色电影| 一级无码高清| 激情五月丁香五月| AV片在线观看| 欧美性爱-熊猫成人网| 俺也去网| 强辱丰满人妻HD中文字幕| 人妻大屁股-91Porn| av无码一区| 成人免费在线观看| 人人干人人操人人摸| 东京热在线免费观看| 日韩小视频在线观看| 九一九色国产| 色哟哟国产精品| 91久久久久久久| av先锋资源| 久久精品大香蕉| 亚洲无码一区二区在线观看| 五月天av在线| 无码啪啪啪| 97久久久| 亚洲日韩视频在线观看| 午夜AV在线| 伊人成人在线观看| 肏屄视频在线观看| 国产成人精品八戒| 久久久久久无码日韩欧美电影| www.操操网| 国产中文人人国际| 伊人精品大香蕉| 美女裸体网站国产| 国产高清无码网站| 日本爱爱片| 欧美在线一级片| 亚洲天堂在线观看免费视频| 欧一美一婬一伦一区二区三区黑人-亚| 骚逼影视| 影音先锋色av| 国产精品成人在线| av无码一区| 无码啪啪啪| 久久久九九九| 大香蕉伊人久久| 91成人无码| 中文字幕高清在线中文字幕中文字幕 | 综合中文字幕| 搞搞爱| 精品人无码一区二区三区下载 | 国产精品99久久久久的广告情况| 久久免费精品视频| 亚洲无码精品视频| 中文字幕视频一区日日骚| 影音av在线| 蜜桃成人久久| 欧美老熟妇BBBBB搡BBB| jizz免费在线观看| 免费无码又爽又黄又刺激网站| 丝瓜av| 国产成人自拍在线| 超碰成人在线观看| 乱伦自拍| 亚洲色色视频| 久热中文在线观看精品视频| 天天爱天天插| 黄色视频免费国产| 伊人成年网| 亚洲综合另类| 色婷婷丁香五月天| 天天干天天干| 亚洲伊人在线| 精品国产精品三级精品AV网址| 中文无码高清视频| 欧美三级片网| 国产一级A片久久久免费看快餐| 丁香五月婷婷色| 日本三级视频| 成人免费视频性爱| 91人妻一区二区三区| 猛男大粗猛爽h男人味| 国产视频入口| 亚洲不卡在线观看| 久久综合热| 亚洲精品一区二区三区| 国产一区| 国内免费毛片| 美女性爱视频网站| 亚洲小视频在线播放| 91人妻无码精品蜜桃| 成人午夜福利网站| 午夜福利干B在线免费小视频| 波多野结衣无码NET,AV| 丁香久久婷婷| 久久中文娱乐网| 免费黄色三级片| а√最新版天堂中文在线| 天天干天天日天天干| 中日美朝美女一级片免费看 | 人妻丝袜蕾丝高跟双飞| 欧美精品一级| 男女av免费| 婷婷五月天网| 图片区视频区小说区| 91青青草| 麻豆性交| 午夜第一页| 黄页网址在线观看| 日韩免费高清视频| 成人片成人片| 成人视频黄片| 久艹综合| 亚洲精品911| 特级无码| 亚洲精品欧美久久婷婷| 日逼高清视频| 久久国产一区二区三区| 2018天天干天天操| 亚洲第一视频| 牛牛影视一区二区| 婷婷无码成人精品俺来俺去| 综合大香蕉| 无码人妻一区| 天天视频色版免费观看视频| 国产免费AV片在线无码| 狠狠狠狠狠操| 一区二区视频在线观看| 99热这里有精品| 在线免费亚洲视频| 超碰天堂| 中文字幕11页| 亚洲操逼网| 人人艹在线观看| 3p视频网站| 熟女视频91| 天天撸天天操| 国产三级国产三级国产普通话| 日韩加勒比在线| 日本一区二区三区在线观看网站 | 黄色免费av| 欧美成人视屏| 8050网午夜| 日韩高清无码免费看| 日本国产在线视频| 精品成人免费视频| 精品欧美无人区乱码毛片| 超碰中文在线| 黄色永久免费| 国产精品国产三级国产专业不| 成人做爰A片一区二区| 精品乱子伦一区二区三区毛| 超碰一区二区三区| 尤物视频在线| 99国产在线| 黄一区二区| 性爱一级| 免费在线观看毛片| 强伦轩人妻一区二区电影| 91夫妻交友视频| 在线免费观看黄色网址| 亚洲中文欧美| 少妇搡BBBB搡BBB搡澳门| 亚洲第一香蕉视频| 久久波多野结衣一区二区| 日韩a级片| 欧美狠狠干| 久久黄片视频| 京熱大亂交无碼大亂交| 精品操逼| 日韩无码波多野结衣| 一级午夜| 亚洲高清在线播放| 自拍偷拍一区二区三区| 9久9久9久9久女女女女| 欧美国产日韩在线| 97人妻碰碰中文无码久热丝袜| 九九色热| 青青草原在线| 欧美熟女性爱| jlzzzjlzzz国产免费观看| 中文字幕无码高清| 欧美成人一区免费视频| 久久午夜无码人妻精品蜜桃冫| 91欧美精品| 国产三级电影| 99re这里只有精品6| 六月天婷婷| 欧美999| 日韩乱伦网站| 91人人爱| 无限高潮| 91国在线| 国产精品综合激情| 婷婷五月999| 亚洲精品国产成人AV在线| 欧美人妻视频| 女同一区二区三区| 99热最新国产| 无码成人片| 动漫操逼视频| av天天看| 丝袜人妻被操视频| 日本色区| 日逼天堂| 免费无码一区二区三区四区五区 | 可以免费观看的毛片| 亚洲无码网址| 自拍毛片| 一区二区三区四区五区无码| 国产欧美日韩在线| www.毛片| 国产一级AV国产免费| 亚洲一级免费免费在线观看| 在线视频污| 男女www| 亚洲性爱大全| 色中色在线视频| 狠狠干| 午夜黄色操逼视频| 91欧美精品成人综合在线观看| 亚洲精品国产精品国自产A片同性 丰满人妻一区二区三区四区不卡 国产1级a毛a毛1级a毛1级 | 大香蕉av在线观看| 极品无码| 大香蕉伊人成人网| 91三级电影| 久久久一区二区| 成人精品一区二区三区电影| 欧美精品久久久久| 精品中文一区二区三区| 亚洲日韩欧美一区二区天天天| 五月丁香六月| 欧美成人性爱在线| 国产精品99久久久久的广告情况 | www.天天射| 99美女精品视频| 天天天天天天天干| 操b视频网站| 精品无码不卡| 免费的操逼视频| 91丨露脸丨熟女精品| 久久精品苍井空免费一区二| 波多野结衣网站| 在线视频久| 无码免费观看视频| 午夜无码福利在线观看| 国产欧美日本| 国产熟妇搡BBBB搡BBBB搡| 欧美久久精品| 北条麻妃无码在线视频| 日本一区二区三区在线播放| 综合色国产精品欧美在线| 中文字幕北条麻妃在线| 亚洲第一福利视频| 免费日B视频| 亚洲免费性爱视频| 无码激情18激情视频| 精品999| v天堂在线观看| 日本三区| 久久久无码精品亚洲日韩男男 | 北条麻妃无码观看| 麻豆熟妇乱妇熟色A片在线看| 三级麻豆| 麻豆性交| 极品AV| 无码做爰欢H肉动漫网站在线看| 免费在线观看a片| 老女人操逼网| 四川少妇BBBB| 51色片| 91第一页| 久久久www| 亚洲精品乱码久久久久久| 亚洲综合一二三区| 嫩苞又嫩又紧AV无码| 一区二区操逼| 久久黄色大片| 人妻少妇91精品一区黑人| 91免费成人电影| 99re6热在线精品视频功能 | 国产熟女AV| 国产h在线观看| 亚洲无码AV免费观看| AV在线精品| 久久久久亚洲AV无码成人片| 69成人精品国产| 午夜激情毛片| 高清无码视频免费观看| 久久嫩草| 亚洲在线中文字幕| 特黄AAAAAAAAA真人毛片| 亚洲性爱在线| 天堂一区二区18| 佳佳女王footjob超级爽| 成人性生活片| 国产做受精品网站在线观看| 少妇搡BBBB搡BBB搡造水多| 国产精品啪啪啪| 豆花视频logo| 国产免费性爱视频| 亚洲国产精品久久久| 97人妻人人澡人人| a国产| 五月激情六月婷婷| 国内精品一区二区| 中文字幕成人在线观看| 大香蕉精品欧美色综合2025| AV在线影院| 国产毛片18水真多18精品| 一本色道久久综合亚洲精品小说| 男女免费av| 中文字幕在线网站| 欧美天天撸| 欧美日本国产| 草草视频在线观看| 国产三级国产三级国产普通话| 91精品国产99久久久久久天美| 久久99精品久久久久| 日韩人妻在线观看| AV资源免费| 17.3c一起起草| 国产欧美黄片| 91久久影院| 懂色av粉嫩av蜜臀av| 丁香操逼| 成人性爱在线观看| 国产jizz| 国产熟女一区二区三区五月婷| 久久婷婷六月综合| 中文字幕在线播放av| 日韩欧美性爱| 爱草在线| 国产和日韩中文字幕| 五月深爱| 黄色视频大全免费看| 欧美、日韩、中文、制服、人妻| 蜜臀久久99精品久久久久久婷婷| 日本女优婷婷青青草原| 青青青草视频在线观看| 北条麻妃A片在线播放| 久久精品视频18| 日韩免费精品视频| 亚洲精品欧美久久婷婷| A在线| 538在线观看| 99久久久99久久91熟女| 91亚洲综合| 苍井空中文字幕在线观看| а√最新版天堂中文在线| 国产嫩草视频| 天天搞天天曰在线观看| 麻豆内射| 国产综合无码| 成人免费视频在线观看| av黄片| 日日射视频| 超碰免费在线观看| 成人电影久久久| 国产黄色一区| 免费高清无码视频| 97色色婷婷| 白丝自慰网站| 专区无日本视频高清8| 国内不卡一卡二视频| 999成人电影| 在线无码视频播放| 人人搞人人操| 在线看片AV| 97在线观看免费| 午夜人妻AV| 嫩草视频在线观看免费网站| 免费在线看黄网站| 中文字幕av免费在线观看| 久久91av| 国产精品色色| 欧美日逼片| 五月天久久久久久| 色伊人| 国产在线观看不卡| 精品蜜桃秘一区二区三区观看| 悠悠色综合| 91视频你懂的| 亚洲国产精品18久久久久久| 操逼操逼操逼| 国产精品揄拍500视频| 91白丝喷水自慰网站| 99中文字幕| 狠狠操在线观看| 二区视频在线| 精品国产va久久久久久| 精品一区二区三区免费毛片| 久草国产在线视频| 天堂黄片| 无码高潮| 操屄视频网站| 日本在线不卡视频| 国产在线拍揄自揄拍无码视频| 2025av天堂网| 免费无码婬片aaaa| 大屌探花| 欧美另类视频| 成人电影久久久| 五月丁香婷中文字幕| 亚洲精品无码在线观看| 国产17c精品视频一二三区 | 欧美在线观看一区| 天天添天天操| 国产成人免费在线视频| 91久久久久久久久| 中文字幕亚洲在线| 天天综合天天做天天综合| 欧美熟妇搡BBBB搡BBBBB| 91天天综合在线| 麻豆乱码国产一区二区三区| 一级一A片一a免费看| 国产系列第一页| 免费一级婬片AA片观看| 亚洲免费高清视频| 婷婷综合素质二区| 高清无码成人视频| 三级片青青草| 日屁视频| 午夜啊啊啊| 翔田千里无码免费播放| 久久久久人妻| 97在线超碰| 刘玥无码| 日本一区免费观看| 成人性在线| 久久黄色片| 日本亚洲黄色视频| 毛茸茸BBBBBB毛茸茸| 国产欧美精品AAAAAA片| 人人爱人人摸| 搞搞爱| 99热在线只有精品| 蜜桃久久精品成人无码AV| Al激情欧美| 欧美激情五月天| 69视频免费观看| 三级毛片视频| 丰满人妻一区二区三区Av猛交| 麻豆久久久| 成人国产精品在线看| 亚洲高清超级无码在线视频观看| 山东乱子伦视频国产| 台湾省成人网站| 免费看黃色AAAAAA片| 婷婷五月丁香色| 欧美日韩国产成人综合| 欧美激情伊人| 蜜桃在线视频| 成人国产综合| 97久久人人| 色图15p| 成人一区二区三区四区五区| 日本高清一区二区高清免费视频| h片免费在线观看| 毛片高清无码| 337P粉嫩大胆噜噜噜55569| 无码人妻91| 国产无套在线观看| 国产激情网站| 国产成人精品免高潮在线人与禽一| 先锋影音资源AV| 91人妻人人澡人人爽人人DVD| 8050午夜一级免费| 日韩中文在线观看| 爱逼AV| 操逼电影网站| 26uuu国产| 免费观看黄色网| 国产91探花系列在线观看| 久艹视频在线观看| 9i看片成人免费视频| 精品视频第一页| 最近日本中文字幕中文翻译歌词 | 亚洲伊人综合| 国产精品一区二区免费| 激情网婷婷| 曰本中文字幕在线视频| 亚洲视频一区二区| 在线播放JUY-925被丈夫上司侵犯的第7天 | 大荫蒂HD大荫蒂视频| 欧美XXX黑人XYX性爽| 三级网站视频| www,久久久| 亚洲日韩AV电影| 色丁香视频在线观看的| 成人无码在线播放| 91黄色电影| 日韩高清无码一区二区三区| 国色天香网站| 黄色一级片在线| 91日韩视频在线| 五月丁香激情六月| 国产亚洲久一区二区| 亚欧毛片| 日本不卡中文字幕| 国产精品日韩无码| av无码免费| 黄色av免费在线| AAA久久久| 日韩精品一区二区三免费视频| 国产777| 久久高清无码视频| 军人妓女院BD高清片在线播放| ww久久| 日韩无码精品一区二区三区| 亚洲AV无码成人精品区久| 欧美日韩一级二级三级| 你懂的在线视频观看| 肥臀AV在线| 日韩无码毛片| 99在线免费观看| 国产h视频在线观看| 亚洲欧美v| 美腿丝袜中文字幕精品| 成人先锋| 久久久久久久久久成人| 日韩不卡av| 天天日天天干天天爽| 无码成人在线观看| 天天操天天干欧美精品| 久久AV电影| 成人三级片网站| 黄色免费大片| 成人av一区| av资源免费观看| 天天操网址| 国产高清A片| 99热免费精品| 黄片高清无码在线观看| 69乱伦视频| 激情五月天网站| 黄色视频免费国产| 免费黄色一级视频| 五月婷婷视频在线观看| 青草视频在线观看免费| 久久日韩视频| 特级毛片AAAAAA蜜桃| 五月色婷婷撸| 色婷婷丁香五月| 高潮视频在线观看| 女人久久| 久久综合99| 亚洲一区二区av| 北条麻妃无码视频在线观看| 91视频久久久| 中文字幕不卡视频| 国产—a毛—a毛A免费看图| 亚洲爆乳无码一区二区三区| 欧美精品成人免费| 久久婷婷五月综合伊人| 亚洲成人AAAAA| 最新毛片网站| 丁香六月婷婷综合缴| 精品91在线视频| 国产系列第一页| 亚洲成人影音先锋| 大肉大捧一进一出免费阅读| 免费视频久久久| 麻酥酥在线视频| 色婷婷俺来也| 激情五月天色色| 亚洲日韩国产中文字幕| 国产人妻人伦精品1国产丝袜| 黑人AV在线播放| 做aAAAAA免费视频| 亚洲美女网站在线观看| 午夜美女视频| 两根茎一起进去好爽A片在线观看| 国产一级a毛一级a毛片视频黑人| 99re欧美激情| 精品中文在线视频| 日本在线一级片| 欧美性久久久久| 98在线++传媒麻豆的视频| 性视频人人| 亚洲无码视频在线观看高清| 九热大香蕉| 久久99草| 亚洲性爱手机版| 五月播播| 99久久精品一区二区成人| 亚洲视频网址| 精品乱子伦一区二区三区下载| 99AV| 国产在线色视频| 日韩资源站| 大陆搡BBBBB搡BBBBBB| 91国在线视频| 久久无码人妻精品一区二区三区| 欧美AAA黄片| 波多野结衣AV在线观看| 国产免费久久久| 亚洲在线a| 99re66| 欧美成年人视频| 激情综合网五月| 先锋资源av在线| 日韩在线一级| 精品成人A片久久久久久不卡三区| 成人肏屄视频| 四川BBB搡BBB搡多人乱| 亚洲中文网| 午夜黄色电影| 国产三级在线播放| AA片在线观看视频在线播放| 黄色视频| 日韩顶级毛片| 大香蕉伊人成人网| 久久久精品无码| 国产一精品一aⅴ一免费| 亚洲人人18XXX—20HD| 亚洲精品成人AV| 一本加勒比HEZYO东京热无码| 大鷄巴成人A片| 亚洲v在线观看| 国产嫩BBwBBw高潮| 日韩成人黄色电影| 99综合在线| 中文字幕第五页| 国产啊啊啊| 中文字幕高清AⅤ| 中文字幕高清无码免费视频| 久久成人在线视频| 亚洲日本中文字幕在线观看| 国产成人片在线观看| 久久波多野结衣一区二区| 成人无码免费毛片| 综合婷婷久久| 免费一级a| 亚洲,制服,综合,中文| 青青伊人网| 日韩欧美视频| 青吴乐大香蕉| 91人妻一区二区三区| 超碰97成人| 91精品国产成人做爰观看奶头 | 人妻精品一区二区在线| 午夜精品在线观看| 无码人妻一区二区三一区免费n狂飙 | 无码一级A片| 五月丁香婷中文字幕| 欧美成人电影在线观看| 河南熟妇搡BBBB搡BBBB| 男人亚洲天堂| 欧美成人一级A片| 久草福利在线观看| 日韩中文字幕在线| 日韩一a| 国产3p露脸普通话对白| 欧美另类极品| 大香蕉伊人婷婷| 91av免费| 日韩人妻在线观看| 91精品久久久久久| 中文字幕乱伦性爱| 91丨豆花丨国产极品| 91就去干| 黄色A片免费视频| 一区二区三区四区免费看| 国产一a毛一a毛A免费| 水果派解说在线观看| 国产精品久久久久久久久免费无码 | 婷婷色图| 天天插在线视频| 亚洲五月六月| 欧美日韩国产91| 日本乱伦网| 麻豆激情| 91精品人妻一区二区三区蜜桃欧美| 日韩精品在线播放| 日本少妇久久| 亚洲无码在线精品| 成年人免费视频在线观看| 中文字幕成人视频| 特极西西444WWW大胆无码| 天天操B| 激情小视频在线| 久久AV电影| 欧美精品性爱视频| 豆花视频logo| 韩国成人啪啪无码高潮| 强伦轩人妻一区二区三区最新版本更新内容 | 大香蕉网在线| 婷婷六月综合| 国产欧美自拍| 国产亚洲视频完整在线观看| 国产黄色一区| 日韩欧美亚洲一区二区三区| 超碰人人操在线| 99爱在线观看| 操操操操操操| 強暴人妻一区二区三区| 日韩加勒比在线| 亚洲成人无码网站| 日韩另类视频| 亚洲黄色视频网站| 欧美操逼免费视频| 无码人妻AV一区| 国产男女视频| 极品人妻疯狂3p超刺激| 国产一区二区精品| 久久久电影| 黄色视频免费观看国产| 国产av资源网| 豆花视频logo进入官网| 97超碰碰| 九九色在线视频| 仓井空一区二区三区| 日韩乱伦av| 无码A区| 日本一级按摩片免费观看| 欧美国产日韩视频| 日韩精品丰满无码一级A片∴| 日韩A∨视频| 成人精品免费视频| 菊花插综合网| 日本AⅤ| 日韩成人精品在线| 麻豆啪啪| 精品国产免费观看久久久_久久天天 | 怮交小拗女小嫩苞视频| 啪啪免费网站| 亚洲国产成人精品综合99| 97色吧| 亚洲色爽| 高h视频在线观看| 精品一区二区三区毛片| 日韩成人AV电影| 999大香蕉| 国产精品一区二区三| 特黄特色免费大片| 天天日日日干| 欧美性性生交XXXXX无码 | 东京热六区| 超碰蜜桃| 中文字幕日本在线| 国产在线观看免费视频| 蝌蚪窝视频网| 筱田步美| 欧美成人黄色| 大乳奶一级婬片A片| 日本一区二区三区四区在线观看| 精品国产天线2024| 成人无码视频在线观看| 亚洲综合区| 特黄特色一级特黄大片| 无码在线高清| 毛片视频免费观看| 老司机永久免费91| 97超碰人人摸| 亚洲调教| 日韩三级小说| 在线91网站| 国产黄片免费视频| 久久午夜福利| 99极品视频| 99在线精品视频观看| 豆花视频logo| 777AV| 18性XXXXX性猛交| 开心老牛熟| 99视频内射三四| 99热中文字幕在线观看| 高清中文字幕在线A片| 欧美日韩日逼| 四川美女网久草| 亚洲高清无码视频在线播放 | www黄色视频| 国产精品国产三级片| 无码人妻熟妇| 日韩在线不卡视频| 色吧五月| 国产精品日韩高清北条麻衣 | 六月激情丁香| JiZZjiZZ亚洲成熟熟妇| 欧美三级网站| 人妻18无码人伦一区二区三区精品| a视频免费| 99热久| 午夜xxx| 久久久久久久久久8888| 中文字幕视频一区| 日韩精品一区二区三区使用方法 | 一区免费在线观看| 熟女嗷嗷叫高潮合集91| 丁香五月网| 熟女人妻人妻の视频| 91夜夜| 一区二区三区亚洲| 97人妻人人操| 在线免费观看无码视频| 香蕉视频国产| 九色PORNY国产成人| 水果派成人播放无码| 精品免费国产一区二区三区四区的使用方法 | 国产成人免费视频在线| 成人一级电影| 骚视频网站| 91人妻人人澡人人爽精品| 91国产爽黄| 男人操女人网站| 日本中文在线观看| 麻豆乱码国产一区二区三区| 国产成人精品毛片| 无码无码无码| 青青国产视频| 无码欧美精品一区二区| 91福利视频网站| 欧美日韩成人| 一区二区三区Av| 大鸡巴久久久久久| 中文字幕永久| 丁香六月操| 一插菊花综合| 91精品国产欧美一区二区成人| 亚洲精品视频在线观看免费| 无套内射学生妹去看片| 91av在线播放| 国产午夜精品一区二区三区四区| 尤物网在线| 麻豆videos| A片网站在线观看| 亚洲高清无码在线| 91av免费看| aaa久久| 91大长腿美女花外围在线观看 | 亚洲无码成人在线观看| 免费18蜜桃久久19| 天堂网婷婷| 亚洲免费成人| 特黄一级A片|