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

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

共 18803字,需瀏覽 38分鐘

 ·

2022-06-15 18:44

?

點(diǎn)擊下方“IT牧場(chǎng)”,選擇“設(shè)為星標(biāo)”

今天來(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"falsefalse"memberGroup"00"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<String> 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<CrawlerScreenShotTaskDto> crawlerScreenShotTaskDtos = Arrays.asList(crawlerScreenShotTaskDto);
        when(mockCrawerScreenShotTaskMapper.listJobScreenShotTask(new GregorianCalendar(2019, Calendar.JANUARY, 1).getTime())).thenReturn(crawlerScreenShotTaskDtos);

        // Run the test
        final List<CrawlerScreenShotTaskDto> 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<PimScreenShotVo> pimScreenShotVos = Arrays.asList(pimScreenShotVo);
        when(mockCrawerScreenShotTaskMapper.query(any(NikeScreenShotListRequestVo.class))).thenReturn(pimScreenShotVos);

        // Run the test
        final PageInfo<PimScreenShotVo> 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<PimScreenShotVo> 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<CrawlerScreenShotTaskSyncDto> 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<CrawlerScreenShotTaskSyncDto> crawlerScreenShotTaskSyncDtos = Arrays.asList(crawlerScreenShotTaskSyncDto1);
        when(mockCrawerScreenShotTaskMapper.findCrawerScreenshotTaskByCreateTime(new GregorianCalendar(2019, Calendar.JANUARY, 1).getTime())).thenReturn(crawlerScreenShotTaskSyncDtos);

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

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

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

        // Run the test
        final Integer result = crawlerScreenShotServiceImplUnderTest.queryCrawlerDashboard(000new 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è)自己的代碼,這樣也是提升工作效率的嘛!


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

干貨分享

最近將個(gè)人學(xué)習(xí)筆記整理成冊(cè),使用PDF分享。關(guān)注我,回復(fù)如下代碼,即可獲得百度盤地址,無(wú)套路領(lǐng)?。?/p>

?001:《Java并發(fā)與高并發(fā)解決方案》學(xué)習(xí)筆記;?002:《深入JVM內(nèi)核——原理、診斷與優(yōu)化》學(xué)習(xí)筆記;?003:《Java面試寶典》?004:《Docker開(kāi)源書》?005:《Kubernetes開(kāi)源書》?006:《DDD速成(領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)速成)》?007:全部?008:加技術(shù)群討論

加個(gè)關(guān)注不迷路

喜歡就點(diǎn)個(gè)"在看"唄^_^

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

手機(jī)掃一掃分享

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

手機(jī)掃一掃分享

分享
舉報(bào)

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

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 男女操逼免费观看| 无码人妻丰满熟妇啪啪| AV资源在线| 国产一a毛一a毛A免费| 无码中文在线| 欧美一级A片免费看视频小说| 国产欧美综合视频一区二区在线| 蜜桃Av噜噜一区二区| 超碰93| 一区二区三区无码专区| 人妻少妇中文字幕久久牛牛| 黄色一级A片| 依人成人| 久久久久久久久久国产| 无码中文一区| 无码高清视频在线观看| 秒播福利| 露脸丨91丨九色露脸| 夜夜嗨av| 中文区中文字幕免费看| 呦小性Free小U女HD| 波多野结衣视频在线观看| 成人小说视频在线社区| 在线观看91| 欧美八区| 久久草在线播放| A片视频播放| 草av| 99美女精品视频| 国产中文在线| 欧美精品久久| 一区二区三区四区视频在线| 啪啪啪免费视频| 久久AV电影| 777性爱| av拍拍| 国产少妇| 日韩色区| 日本高清无码在线观看| 无码AV动漫| 大鸡吧操视频| 688AV秘无码一区二区| 国产成人综合自拍| 亚洲狼人| 国产精品无码一区二区在线欢| 一级爱爱片| 91中文视频| 尤物网站在线播放| 江苏妇搡BBBB搡BBBB-百度| 伊人二区| 亚日韩视频| 日本处女性高潮喷水视频| 日韩人妻一区二区三区| 91在线一区二区| 婷婷久久婷婷| 安徽妇搡BBBB搡BBBB按摩| 日韩一区二区无码视频| 色婷婷香蕉在线一区二区| 老司机无码| 欧美性国产| 大香蕉国产精品| 俺去啦俺也去| 国产精品久久久久无码| 亚洲日韩精品成人无码专区AV | 宅男噜噜噜66一区二区| 999福利视频| 亚洲无码午夜| 色播五月天| 日本A片在线免费观看| 女人的天堂AV| 抠逼网站| 中文字幕1区| 成人三级片网| 91精品丝袜久久久久久久久久粉嫩| 日韩V片| 另类欧美色图| 三级网站在线播放| 在线中文AV| 淫香淫色综合网| 亚洲国产一区二区在线| 亚洲AV无码乱码国产精品| 不卡在线视频| 91亚洲国产成人久久精品麻豆| 91新婚人妻偷拍| 国产一级A片久久久免费看快餐 | 国产伦精品一区二区三区妓女下载| 操比视频在线观看| 男女操逼网站| 亚洲欧美日韩不卡| 精品人妻午夜一区二区三区四区| 初学影院WWWBD英语完整版在线观看 | 欧美亚洲综合在线| 国产不卡一| 成人永久免费视频| 五月婷婷丁香五月| 午夜福利影片| 黄色电影视频网站| 国产午夜精品一区二区| 日本免费无码| 色色综合视频| 西西444| 国产白丝视频| 91在线永久| 国产白丝精品91爽爽久久| 韩国无码高清视频| 亚洲AV毛片成人精品网站| 婷婷综合欧美| 国产AV直播| 日本高清久久| 免费草逼网站| 国产精品美女在线观看| 五月丁香欧美综合| 最新毛片网站| 成人免费网站在线| 亚洲一级性爱| 东京热91| 色欲91| 五月婷婷色色色| 五月婷婷激情五月| 亚洲色无码| 99热国产在线观看| 日本成人网址| 国产精品午夜福利视频| 精品成人免费视频| 青娱乐自拍偷拍| 国产无码中文字幕| 夜夜高潮夜夜爽| 一级爱爱片| 亚洲av在线免费观看| 婷婷丁香激情| 高h视频在线观看| 爱爱视频免费看| 亚洲操逼网站| 亚洲色婷婷| 狠狠干| 久久肏屄视频| 人妻熟女视频| 欧美性爱内射| 久久国产2025| 99在线精品观看| 影音先锋av成人电影| 久久成人福利| 色视频在线播放| 99久久99久久久精品棕色圆| 韩国无码片| 强开小嫩苞一区二区电影| 午夜无码人妻AV大片| 99在线观看精品视频| 日韩中文字幕久久| 国产亚洲视频在线观看| www.啪啪| 天堂在线最新资源| 中文字幕无码一区二区| 亚洲日韩国产中文字幕| 香蕉国产在线| 91久久婷婷亚洲精品成人| 日本69视频| 中文字幕精品在线视频| 免费在线观看黄视频| 国产欧美成人| 日韩精品不卡| 在线视频a| 国产精品视频免费观看| AV无码精品| TokyoKot大交乱无码| 超碰人人干人人操| 91亚洲国产精品| 69国产精品无码免费| 日本高清视频免费观看| 国产日本在线| 在线操逼| 波多野结衣网址| 亚洲天堂一级片| 欧美aaaaaa| 精品爆乳| 国产欧美成人在线| 97在线精品| 国产精品无码7777777| 三级三级久久三级久久18| 操碰97| 天天干天天摸| 丁香五月亭亭| 亚洲一区高清无码| 人妻精品无码| 国产V在线观看| 女生自慰网站在线观看| 在线视频91| 高清中字无码| 亚洲一区自拍| 影音先锋色AV| 婷婷久久婷婷| 五月激情啪啪| 亚洲无码一区二区三区四区| 国产无套在线| 亚洲人成77777| 2018中文字幕第一页| 黄在线| 日日拍夜夜拍| 亚洲无码福利| 99色逼| 亚洲欧美日韩不卡| 四房五月婷婷| 91抽插| 在线色片| 国产欧美一区二区精品性色超碰| 亚洲日韩中文无码| 午夜视频网| 久久精品视频一区| 狠狠躁夜夜躁人爽| 五月丁香五月婷婷| 中字一区人妻水多多| 嫩草视频在线播放| 波多野结衣一级| 伊人一区二区三区| 久热国产视频| 欧美成人片免费看| 波多一区| 黄色片国产| 人人操人人草| 日韩18禁| 欧美一级做| 337P粉嫩大胆噜噜噜55569| 欧美级毛片一进一出夜本色| 成人国产在线观看| 操久久| 超碰日日夜夜| 激情久久AV一区AV二区AV三区| 亚洲无码字幕| 特级444WWW大胆高清| 一级操逼视频免费观看| 免费国产精品视频| 少妇bbb| 一级a一级a免费观看视频Al明星 | 人妻九九九| 婷婷欧美日韩| A级毛片在线观看| 丁香激情五月天| 91国产视频在线播放| 草久在线| 你懂的网站在线观看| 国产精品片| 手机不卡黄色视频在线| 中文字幕成人免费视频| 人人做人人操| 色色五月天婷婷| 日韩在线观看免费| 加勒比综合无码| 久操av在线| 中文国产字幕| 日韩看片| 午夜福利AV电影| 亚洲一级性爱| 伊人久色| 国产精品18进进出出17c| 国产三级图片| 波多野结衣视频一区| 都市激情亚洲| 天堂亚洲精品| 久久久久黄片| 丰满人妻一区二区三区精品高| 91你懂的| 成人五月天黄色电影| 成人理伦A级A片在线论坛| 日本爱爱小视频| 国产一区| 国产精品中文字幕在线观看| 在线观看免费成人网站| 操碰在线| 中国老熟女2老女人| 亚洲无码精品一区二区三区| 狠狠狠狠操| 欧美区在线观看| 99免费在线视频| 人人澡人人爽人人精品| 国产精品久久久| 伊人久久AV| 草B视频| 18国产免费视频| 五月天国产视频| 青青操成人在线视频| 日韩有码第一页| www.爆操| 成人精品一区日本无码网站suv| 高清日韩无码视频| 大鸡巴午夜爽视频电影| 荫蒂添的高潮免费视频| 专业操老外| 亚洲色图狠狠撸| 亚洲av小说| 精品成人A片久久久久久不卡三区 免费看成人A片无码照片88hⅤ | 欧美不卡| 国产免费性爱视频| 五月丁香六月婷婷综合| 欧美A片在线观看| 天天干天天射天天| 亚洲视频黄色| 亚洲一区二区三区无码| 亚洲永久天堂| www.熟女| 一欧美日韩免费/看| 亚洲黄色视频在线观看网站| 91精品久久久久久粉嫩| 国产精品色在线回看| 久久福利视频导航| 在线观看无码高清| 在线成人亚洲| 狠狠狠狠狠狠狠狠狠| 亚洲免费视频在线| 色五月婷婷五月天激情| 亚洲40p| 日本高清无码| 东京热日韩无码| 91九色91蝌蚪91窝成人| 欧美美女视频网站| 伊人天天日| 亚洲无码AV电影| 午夜成人免费福利| 欧美日一区二区三区| 色婷婷在线视频| 国产亚洲99久久精品熟女| 九九性爱视频| 人妻无码精品久久人妻成人| 色999日韩| 成人A毛片| 一区二区三区Av| 天天看天天日| 青青草手机视频在线| 欧美日P| 欧美日韩国产在线| 欧美亚洲操逼视频| 九九九成人| 一级成人视频| 国产久久精品| 91亚洲精品久久久久蜜桃| 五月天一区二区三区| 国产91白丝在一线播放| 无码日批| www.精品视频| 免费AV黄色| 无码视频在线看| 西西444www大胆高清图片| 风流老熟女一区二区三区| 天天做天天爱天天爽| 免费69视频| 在线观看免费无码| 亚洲午夜久久久之蝌蚪窝| 成人无码免费毛片| 少妇精品| 亚洲高清电影| 国产A片免费看| 国产对白视频| 欧美黄片免费观看| 激情婷婷六月| 国产妞干网| 欧美无遮挡| 亚洲欧美国产视频| 国产91一区在线精品| 国产精品久久久久久久久久久久久久久 | 狼人色综合| 涩涩99| 亚洲无码在线精品| 亚洲一区二区av| 亚洲日本中文字幕在线观看| 一级色情片| 久9久9| 国产真实露脸乱子伦对白高清视频| 大香蕉精品欧美色综合2025| sm在线观看| 韩国深夜福利视频| 国产老熟女久久久| 偷窥美鲍| 强奸乱伦五月天| 91在线免费视频| 亚洲欧洲日韩综合| 先锋影音资源站| 久久夜色精品国产噜噜亚洲AV | 青青草99热| 可以免费看AV的网站| 国产精品18进进出出17c| 无码欧洲| 午夜精品18码视频国产17c| 欧美日韩成人一区二区三区| 丝袜美女足交| 中文区中文字幕免费看| 天天干强奸视频在线综合| 精品国产久| 欧美一区二区丁香五月天激情| 无码在线观看免费视频| 亚洲精品国产精品乱码视99| AV天天看| 中国少妇| 久久精品一二三| 欧美一级二级三级| 久久私拍| 999成人电影| 苍井空一区二区三区| 安徽妇搡BBBB搡BBB| 成人做爰100部免费网站| 亚洲中文无码在线观看| 五月婷婷中文| 成人在线黄片| 日本三级视频| 在线观看视频无码| 无码一区二区北条| 男人亚洲天堂| 刘玥精品A片在线观看| 成人激情综合网| 久久久久一区二区三区| 久久思思热| 日韩,变态,另类,中文,人妻| 亚洲免费视频在线观看| 毛片中文字幕| 人人草人人看人人摸| 丰滿人妻一区二区三区| 99热这里只有精品999| 日本A片在线观看| 久久久久久伊人| 色婷婷在线视频| 欧美高清无码视频| 久久婷婷无码视频| 2021无码| 国产做爰XXXⅩ久久久骚妇| 国产骚逼| 欧美在线视频播放| 亚洲一区二区三区免费视频| 成人做爰黄A片免费看直播室动漫 中文字幕一区二区三区四虎在线 欧美熟妇精品一级A片视色 | 亚洲成人无码电影| 中文字字幕在线| 亚洲丝袜不卡| 国产亚洲日韩在线| 大香蕉网站视频| 成人黄色毛片| 日韩人妻精品中文字幕专区不卡| 91羞射短视频在线观看| 国产高清无码一区二区三区| 日本在线观看www| 99视频网站| 免费做a爰片77777| 免费+无码+精品| 日韩精品123| 俺也来www俺也色com| 蜜桃免费AV| 亚洲视频在线免费播放| 成人一级黄色片| www.91av| 蜜桃av无码一区二区三区| 鲁鲁鲁鲁鲁鲁鲁777777| 日韩无码中文字幕| 国产无套进入免费| 中文字幕永久在线视频v1.0| 豆花AV| 97国产精品久久| 国产亚洲欧美一区二区| 亚洲AV无码精品| 狠狠操婷婷| 黄片网址| 国产成人高潮毛片| 日韩AV自拍| 亚洲情免| 丁香五月激情五月| 无码蜜桃吴梦梦| 91亚洲精品久久久久蜜桃| 国产黄色免费乱伦片| 阿v视频在线观看| 国产清纯可爱美女自卫裸贷偷情| 免费无人区一码二码乱码怎么办| 五月婷婷成人| 黄色毛片,男人天堂| 欧美一级特黄A片免费| 欧美性性性| 大香蕉av一区二区三区在线观看| 蜜芽成人在线| 成人黄色录像| AA黄色电影| 小黄片在线| 特黄AAAAAAAA片免费直播| 爱爱视频日韩| 蜜桃av秘无码一区二区| 伊人影院久久| 国产噜噜噜噜噜久久久久久久久| 亚洲黄色成人网站| 青娱乐最新官网| 欧美AAAAAAAA| mm131亚洲国产精品久久| 黑人人妻黑人ThePorn| 蜜桃视频无码区在线观看| 亚洲日韩欧美性爱| 亚洲免费在线视频观看| 精品视频网| 一道本激情视频| 日韩91| 亚洲综合在线网| 国产精品毛片一区二区在线看| 一本一道vs波多野结衣| 亚洲av中文| 免费看黄的网站在线观看| 精品国产免费无码久久噜噜噜AV| 青草福利视频| 亚洲最新中文字幕| www444www| 四季AV一区二区凹凸懂色桃花 | 亚洲无码小电影| 日韩AV无码成人精品| 欧美在线观看一区二区| 嫩BBB槡BBBB槡BBB3i| 无码窝在线观看| 中文字幕精品1| 佐山爱人妻无码蜜桃| 成人在线免费视频观看| 天天撸一撸视频| av官网| 国产AV无遮挡| 蜜臀久久99精品久久久电影 | 亚洲精品一区中文字幕乱码| 中文字幕在线日韩| 成人黄色视频免费| 亚洲理论| 丁香激情视频| 欧美一级爱爱| 欧美三级电影在线观看| 日韩不卡电影| 91综合在线观看| 久久久久久久| 国产中文字幕在线视频| 牛牛精品一区二区| 中文无码AV在线| 国产成人无码区免费视频| 二区视频| 亚洲黄片免费在线观看| 另类老妇性BBwBBw图片| 超碰91免费在线观看| 中文无码字幕| 自拍偷拍成人视频| 伊人国产视频| 操逼视频在线免费看| 色av网| 国产三级网站| 国产精品久久久久久久久久九秃 | 午夜免费小视频| 亚洲小电影在线观看| 青春草在线观看| 特级西西44www无码| 插插插菊花综合网| 成人无码网站在线观看| 久久久女女女女999久久| 亚洲一区av| 亚洲黄片视频| 成人免费视频一区二区| 香蕉视频日韩| 成人影片在线观看18| 无码一级| 99re久久| 亚洲日逼视频| 久久一二三四| 人人舔人人草| 中国最大成人网站| 无码精品一区| 日本不卡一区二区三区| 欧美性综合| 在线亚洲色图| 国精自拍| 国产精品一级无码免费播放| 强伦人妻一区二区三区| 国产亚洲欧美在线| 99热在线观看精品免费| 午夜福利视频网站| 在线伊人网| AV无码资源| 99热在线观看| 91在线无码| 黑人无码AV黑人天堂无码AV| 精品国产午夜福利在线观看| 精品无码一区二区三区在线| 国内自拍网站| 好吊视频一区二区三区红桃视频you | 亚洲娱乐在线| 91ThePorn国产| 国产精品秘精东影业| 18禁网址| 亚洲高清视频在线| 国产婷婷色一区二区在线观看 | 丁香五月AV| 久久精品亚洲无码| 国产精品自拍三级| 影音先锋无码专区| 性爱AV网| 东京热无码高清| www.97yy| 亚洲第一视频| 中文在线字幕电视剧免费平台 | 黄色视频网站在线| 国产AV一区二区三区精品| 伊人久久国产| 成人无码免费一区二区中文| 成人黄网站免费视频| 欧美韩日一区二区| 免费观看日韩无码视频| 99re6热在线精品视频功能| 日本无码在线| 欧美激情一区二区三区| 欧美精品久久| 奇米色五月| 国产作爱| 熟妇槡BBBB槡BBBB图| 国产乱╳╳AⅤ毛片| jzzijzzij亚洲成熟少妇在线观看| 免费无码成人| 一区二区操逼| 亚洲在线| 国产乱子伦日B视频| 天天噜| 韩国一级av| 久99久热| 色五月婷婷在线| 黄色电影天堂| 久久免费视频,久久免费视频| 成人777777免费视频色| 日日摸日日添日日躁AV| 欧美大胆a| 搞搞电影91| 日韩精品一区二区三区四在线播放| 欧美一级片| 人人精品| 久草福利在线观看| 亚洲成人精品在线观看| 色五月网| 特级黄色视频| 日韩人妻无码一区二区三区| 俺去俺来也WWW色老板| 777777国产7777777| 成人小说视频| 国产乱子伦一区二区三区免看| 人妻HDHDHD96XXXX| 国产精品视频在线播放| 精品玖玖| 大香蕉AV电影| 精品一区二| 超碰a片| 豆花无码视频一区二区| 中文字幕免| 性爱精品视频| 一区二区三区精品婷婷| 成人网肏逼视频| 亚洲在线免费观看| 伊人在线视频| 黄色片免费观看| 无码一级片| 日本操B| 欧美色图第一页| 丁香色婷婷| 日韩av电影在线观看| 国产精品美女毛片真酒店| 人人操在线播放| 中文字幕免费高清在线观看| 黄片免费视频在线观看| 亚洲成人网在线观看| 小黄片免费在线观看| 国产婷婷色一区二区三区| 四虎精品成人无码A片| 无码777| 亚洲国产成人电影| 亚洲最新中文字幕| 日韩精品成人无码免费| 亚洲日韩中字| 蝌蚪窝视频在线| 欧美v日韩| 五月丁香天堂网| 奇米色色色| 天天做天天爱天天爽| 91爱爱视频| 欧美黄色小视频| 亚洲午夜视频在线观看| www.插插插| 久久久久亚洲AV色欲av| 91精品国久久久久久无码一区二区三区| AV女人天堂| 亚洲黄片免费看| 九九热精品视频在线播放| 双飞人妻13p| 日本无码人妻| 欧美一级日韩一级| 18禁网站| 懂色Av| 蜜桃秘一二三区最新| 偷窥美鲍| 黄色片大香蕉| 乱子伦一区二区三区视频在线观看 | 久久精品禁一区二区三区四区五区| 欧美不卡在线播放| AA黄色电影| 色男天堂| 国产精品色婷婷| 成人做爰黄级A片免费看土方 | 91做爱| 黄色小视频在线| 加勒比精品在线| 色色一区二区| 男人天堂综合网| 在线操B| 天堂俺去俺来也www久久婷婷 | 97人人草| 中文字幕在线观看免费高清完整版在线观看 | 91无码精品| 国产一级在线观看| 麻豆精东一区二区欧美国产| 一级做a爰片毛片A片| www日本高清| 一级a一级a爰片免费免免在线| 亚洲乱码在线| 波多野结衣AV在线观看| 一级少女免费播放电视剧韩剧TV | 国产亚洲一区二区三区| 婷婷在线综合| 东北嫖老熟女一区二区视频网站 | 怡春院熟女精品AV| 亚洲欧洲免费看| 亚洲经典一| 亚洲精品白浆高清久久久久久 | 亚洲午夜激情| 永久在线| www污| 午夜蜜桃| 亚洲AV秘无码苍井空| 国产高清一区二区三区| 大香蕉久操| 精品无码一区二区三区爱与| 亚洲欧美大香蕉视频网| 国产二区视频| 第四色色综合| 黄色国产视频在线观看| 无码免费高清视频| 日本在线黄色视频| 日韩中文字码无砖| 国产三级电影在线观看| 久久久91| 苗条一区小视频| 日韩高清久久| 天天草网| 欧美日韩国产免费观看成人片| 人人天天操| 欧美性受XXXX黑人XYX性爽冫 | 51福利导航| 91福利网址| 亚洲日韩精品在线观看| 国产精品无码7777777| 亚洲欧美成人网| 色老板网站| 欧美五月在线网址| 中文字幕亚洲观看| 男人天堂资源网| 日韩激情在线观看| 国产精品77777| 护士小雪的yin荡高日记H视频| 国产成人AV片| 影音先锋人妻限定| av大片在线观看| 精品国产精品三级精品AV网址| 一区二区三区日本| 水果派中文解说AⅤ| 成人黄网免费观看视频| av在线无码| 国产无毛| 伊人网视频在线播放| 天堂A片| 国产传媒精品| 无码AV大香线蕉伊人| 91你懂的| 在线中文字幕在线观看| 动漫操逼视频| 色婷婷18正码国产| www.亚洲| AV无码免费观看| 免费一级A片| 俺去了无码| 欧美日韩成人网站| 无码精品一区二区在线| 91资源在线观看| 黄色片视频网站| 土牛AV| xxxx日韩| 开心激情婷婷| 亚洲精品无码中文字幕| 91偷拍视频| 婷婷五月天青草| 四川少妇搡BBw搡BBBB搡| 99精品视频网站| 天天爽天天搞| 久久久国产91桃色一区二区三区| 91青青草| 黄色免费福利视频| 欧美成人电影在线观看| 亚洲av动漫| 亚洲AV免费在线| 奶头和荫蒂添的好舒服囗交漫画 | 日韩少妇无码视频| 国产日韩一区| 免费黄片在线看| 黄色大片中国一级片-免费看特一级片-亚洲黄色AV | 久久91久久久久麻豆精品| 国产精品尤物| 黃色一級片黃色一級片尖叫声-百度-百 | 美女天天日| 91无码在线视频| 综合久久网| 4080yy午夜理论片成人| 亚洲毛片亚洲毛片亚洲毛片| 久久久久麻豆V国产精华液好用吗 色噜噜狠狠一区二区三区牛牛影视 | 色播五月天| 久草大香蕉在线视频| 日韩啊啊啊| 91内射视频| 国产一区二区av| 欧美视频手机在线| 亚洲三级无码在线| 北条麻妃无码一区二区| 猛操美女| 影视先锋久久| 91免费福利视频| 在线无码一区二区三区| 尤物视频网址| 国产a一级a毛一级视频| 亚洲在线观看中文字幕| 四虎在线观看一区网址| 91色欲| 97中文在线| 无码做爱视频| 噜噜噜av| 欧美黄色小说| 国产嫩草影院| 国产乱码一区二区三区的区别| 怡春院av| 午夜无码鲁丝片午夜精品| 88AV在线观看| 欧美va在线| 91精品久久香蕉国产线看观看 | 亚洲黄v| 四色永久成人网站| 99热网站| 超碰自拍99| 99久re热视频精品98| 成人无码区免费A片| 成人免费视频一区二区三区| 青青草手机视频在线| 三级毛片网站| 男人的天堂婷婷| 日本一级视频| 亚洲的天堂的αⅴ| 激情视频免费看| 久久久久久久久久成人| 国产成人高潮毛片| 成人免费观看的毛视频| 婷婷日韩在线| 色婷网| 天天综合91| 免费观看日韩无码视频| 亚洲天堂手机在线| 久久国产劲爆∧v内射| 成人精品免费视频| 99热超碰| 黄一区二区| 911香蕉视频| 黄片入口| 亚洲Av在线观看| 国产高清无码在线观看视频| 日韩A片无码ⅩXXXX| 在线观看免费欧美操逼视频| 亚洲人成电影网| 婷婷无码视频| 国产精品久久久久久久久A| 色图15p| 日本少妇无码| 高清无码免费在线视频| 久艹大香蕉| 伊人五月天激情| 久久99久久视频| 午夜福利站| 久热精品在线观看| 国产盗摄AV| 色婷婷在线影院| 超碰成人免费| 国产精品色婷婷| 日本无码成人| 五月丁香五月婷婷| 台湾色综合| 久久精品夜色噜噜亚洲A∨| 三级片无码| 在线观看中文字幕网站| 免费观看黄色电影| 中文字幕高清| 一区二区三区www污污污网站| 免费毛片网| 欧美色一级| 黄色视频a| 青娱乐超碰在线| 麻豆911精一区二区| 国产免费一级片| 久热中文字幕| 高清无码在线免费视频| 亚洲无码视频在线看| 西西4444www无码精品|