1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

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

        共 18807字,需瀏覽 38分鐘

         ·

        2022-06-26 04:33

        關(guān)注Java學(xué)習(xí)之道一起成長(zhǎng),一起學(xué)習(xí)~

        作者: 浮生(FS)
        來(lái)源: blog.csdn.net/sun5769675/article/details/111043213

        Part1Squaretest

        今天來(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)上手幫忙寫(xiě)了兩個(gè),寫(xiě)到第二個(gè)的時(shí)候就發(fā)現(xiàn),這個(gè)活不應(yīng)該是人干的,要去看原來(lái)的代碼,然后根據(jù)邏輯寫(xiě)各種Mock,感覺(jué)是有跡可循的東西,所以就查了下,發(fā)現(xiàn)果然有插件幫我們來(lái)干這個(gè)事情,那么接下來(lái)就來(lái)看看。

        Part2安裝

        我使用的是idea,我們先來(lái)下載一下插件,F(xiàn)ile——>Settings——>Plugins,搜索Squaretest,然后install就好了,插件安裝完成后需要重啟一下重啟之后,菜單欄就多了一項(xiàng)Squaretest,下面我們來(lái)講下怎么用,大家也可以通過(guò)看這個(gè)菜單的最后一項(xiàng):Generate Test Methods(Help)來(lái)看它的一個(gè)演示,但演示不太全,我下面截圖給大家看下我怎么用的,以及一些使用心得。

        歡迎關(guān)注公眾號(hào)"Java學(xué)習(xí)之道",查看更多干貨!

        Part3使用心得

        首先我們打開(kāi)一個(gè)類(lèi),這個(gè)類(lèi)就是我們即將要作為實(shí)驗(yàn)的類(lèi),這個(gè)類(lèi)有7個(gè)public方法,因?yàn)镾quaretest生成的單元測(cè)試方法都是只能生成public的,當(dāng)然這也是合理的嘛!畢竟private的肯定被public調(diào)用了。如果我們來(lái)手寫(xiě)這個(gè)類(lèi)的單元測(cè)試,光看都要一會(huì),下面看我操作,打開(kāi)你的類(lèi),光標(biāo)定位到代碼里,右擊鼠標(biāo)選擇Generate…然后你就會(huì)看到這里有兩個(gè)熟悉的圖標(biāo),第一次的話(huà)選擇第二個(gè)選項(xiàng),它會(huì)讓你選擇你一下單元測(cè)試的模板,因?yàn)槲乙呀?jīng)選擇過(guò)了,所以我現(xiàn)在演示不回再?gòu)棾?,但后面我?huì)告訴你怎么更改模板。

        歡迎關(guān)注公眾號(hào)"Java學(xué)習(xí)之道",查看更多干貨!

        選擇第二項(xiàng)后就會(huì)彈出一個(gè)框看下面這里它自動(dòng)會(huì)識(shí)別出當(dāng)前類(lèi)需要Mock的成員變量,直接點(diǎn)ok自動(dòng)會(huì)使用類(lèi)的真實(shí)目錄層次在test文件夾中創(chuàng)建出來(lái)一個(gè)單元測(cè)試類(lèi),類(lèi)名就是原類(lèi)名后加Test我把代碼貼出來(lái)給大家看看它生成出來(lái)的是什么樣的,看看嚇不嚇人,牛逼牛逼,7個(gè)單元測(cè)試方法,秒秒鐘就出來(lái)了,各位看官你們自己寫(xiě)要多久能寫(xiě)出來(lái),畢竟時(shí)間就是金錢(qián)啊!然后我們執(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è)試的模板,如果你要切換的話(huà)可以在單元測(cè)試類(lèi)中按快捷鍵,Alt+M,或者通過(guò)Squaretest的菜單倒數(shù)第二個(gè),下面這個(gè)就是按快捷鍵的效果,我選擇的是這個(gè)模板,你們也可以借鑒。OK,以上Squaretest部分就結(jié)束了,當(dāng)然拉也不能高興的太早,這個(gè)類(lèi)算是比較成功的情況,很多時(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%的工作量。

        歡迎關(guān)注公眾號(hào)"Java學(xué)習(xí)之道",查看更多干貨!

        Part4另一個(gè)問(wèn)題

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

        @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í)體類(lèi)上通過(guò)Squaretest生成單元測(cè)試,然后繼承我上面寫(xiě)的那個(gè)base類(lèi),vo的單元測(cè)試代碼稍加改動(dòng),如下

        -- END --

         | 更多精彩文章 -



        ← 左右滑動(dòng)與Java學(xué)習(xí)之道互動(dòng)交流 →

        加我微信,交個(gè)朋友
        長(zhǎng)按/掃碼添加↑↑↑

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

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            AV无码在线免费观看| 国产三级片在线观看视频| 在线成年人视频| 大香蕉75| 日韩二区三区| 久草国产精品| 三级成人免费| 在线观看一区二区视频| 久久久国产视频| 内射无码专区久久亚洲| 99热在线观看免费精品| 欧美做受高潮白| 亚洲国产精品成人网站| 秋霞福利视频| 国产精品自拍小视频| 中国老女人性爱视频| 黄色毛片网| 5252a我爱haose01我愿| 国产精品视频一区二区三| 久草综合视频| 中文国产字幕| 亚洲A在线观看| 国产乱子伦精品久久| 操B视频在线免费观看| 日本女优婷婷青青草原| 爱搞视频在线观看| 超碰777| 九色PORN视频成人蝌蚪自拍| 精品美女视频| 国产av综合网| 欧美黄片在线免费看| 日韩免费高清在线视频| 在线二区| 国产在线观看国产精品产拍| 大香蕉在线伊| 亚洲日韩AV无码| 日韩中文字幕av在线| 色色色五月婷婷| 欧美性之站| 国产一级片| 色五月激情五月| 久久少妇视频| 97人妻人人揉人人躁人人 | 老熟妇一区二区三区啪啪| 精东av| 久草在在线| 一级A片久久久免费直播间| 开心四房播播第四婷婷| 97无码视频| 国产激情精品| 爱搞搞视频| 亚洲Av无码成人专区擼| 欧美日韩免费在线| 亚洲无码AV一区二区| 国产成人精品a视频一区| 日韩国产综合| 91美女在线观看| 性爱网站免费看| 五月天黄色电影| 中文字幕在线免费观看视频| 精品国产三级| 做爱网| 无码毛片一区二区三区人口| 国产免费a片| 欧美日韩激情视频| 日本一区不卡| 99色99| 日韩AV电影网站| 东京热日韩无码| 久久免费毛片| 人妻少妇精品视频一区二区三区| 日韩欧美性爱网站| 久久久婷婷五月亚洲国产精品 | 天天操天天操天天操天天操| 99久在线视频| 成人自拍在线| 欧美热热| 天天舔天天干| 成人日韩在线| 国产aaaaaa| 国产在线播放av| 青青草原国产视频| 最近中文字幕无码| 亚洲天堂AV在线观看| 9999re| 欧美性受XXXX黑人XYX性爽一| 干干影院| 国产无遮挡又黄又爽又| 91在线无码视频| 欧美A√| 国产日韩在线播放| 最新中文字幕免费MV第一季歌词 | 日本A在线观看| 在线观看中文字幕AV| 波多在线视频| www.91com| 三级内射| 久久视频免费看| 亚洲一区二区免费视频| 在线观看不卡av| 亚洲欧美日韩免费| 午夜性爱网址| 99色热视频| 久久久精品在线| 国产高清AV在线| 国产一级特黄大片| 大香蕉色视频| 91丝袜在线| 精品丰满人妻一区二区三区免费观 | 色片免费| 日韩欧美亚洲一区二区三区| 麻豆传媒免费观看| 亚洲av大全| 日韩欧美中文字幕公布| 精品永久免费| 青草青草视频| 伊人性爱网| 日韩欧美一级视频| 成人毛片100免费观看| 国产欧美综合在线| 精品久久精品| 天天爽天天爽| 精品一区在线| 九九热只有精品| 东京热综合| 国产精品黄片| 亚洲国产精品自在自线| 色av影音先锋无吗一区| 香蕉av在线| 全部在线A片免费播放| 日本精品视频在线| 久草大香蕉在线| 无码人妻久久一区二区三区蜜桃| 操B影院| 蜜臀AV网| 插插插菊花综合网| 国产精品77777| AV黄色在线观看| 婷婷久久久久| 国产成人精品一区二三区熟女在线 | 国产色综合视频| 免费做爱网站| 加勒比无码高清| 91偷拍网| 中文字幕欧美日韩| 胖老板办公室沙发无套爆秘书 | 能看毛片的网站| 青青草在线观看视频| 欧美老女人操逼视频| 精品AV无码| 自拍做爱视频| 欧美色图综合网| 久久久国产91桃色一区二区三区| 中文字字幕在线中文乱码| 爽好紧别夹喷水欧美| 亚洲中文字幕久久日| 蝌蚪九色啦403| 欧美爱爱试看| 中文字幕丰满的翔田千里| AV在线导航| 欧美日韩性爱网站| 高潮国产视频| 成人日韩欧美| 麻豆国产91在线播放| 91在线视频观看| 免费无码A片在线观看全| 国产青青操| 亚洲瑟瑟| 日韩精品成人片| 国产男女啪啪视频| 91女人18毛片水多的意思 | 国产一区二区三区成人| 玖热精品| 久久成人在线| 免费中文字幕av| 国产操比| www香蕉成人片com| 亚洲无码成人| 丰满少妇一级片| 精品无人区无码乱码毛片国产| 婷婷成人视频| 综合久久亚洲| 亚洲无码99| 日韩高清无码一区二区| 日韩人妻无码一区二区三区七区| 色婷婷五月激情| 国产一区久久| 亚洲免费观看高清完整版在va线观看 | 欧美精品一二三| 一区二区三区视频免费| 大香蕉精品欧美色综合2025| 久久久久久亚洲AV黄床| 欧美mv日韩mv国产| 欧美成人黄色小说| 婷婷五月天亚洲| 婷婷操逼| 激情无码五月天| 亚洲三级黄片| 亚洲一区欧美| 四川BBB搡BBB搡多人乱| 亚洲av免费在线观看| 国产欧美日本视频| 高清无码视频免费版本在线观看| 亚洲码成人| 亚洲天堂天天| 中国老少配BBwBBwBBW| 亚洲成人网站免费观看| 国产小视频在线播放| 亚洲人体视频| 北条麻妃一区二区三区| 婷婷二区| 国产69久久精品成人看| 午夜久久久久久久久久久久91| www.黄色在线观看| 人人妻人人爽| 日本精品视频在线| 中文字幕第11页| 爆草美女| 亚洲欧美性爱| 色欲成人AV| 久久色片| 能看的av| 免费视频a| 久久人搡人人玩人妻精AV香蕉| 精品吃奶一区二区三区视频| 四川BBB搡BBB爽爽爽电影| 18禁网站禁片免费观看| 国产av福利| 欧美日本一区二区三区| 中文字幕日本成人| 成人伊人综合| 色噜噜噜| 亚洲精品一区二区三区四区高清| 成人免费网站在线观看| 亚洲三级黄色| 久精品视频| 精品视频久久久久久| 青青草娱乐视频| 色五月av| www99热| 日韩视频免费看| 精品一区三区| 欧美一级特黄A片免费| 水蜜桃视频在线观看| 爱逼爱操| 色噜噜一区二区三区| 欧美亚洲在线| 亚洲天堂AB| 特一级黄色| 国产黄色视频在线免费看| 韩国无码免费| 污导航在线| 91熊猫| 午夜福利10000| 亚洲免费高清| 日韩AⅤ视频| yw在线播放| a天堂视频| 午夜精品久久久久久久久久久久| 欧美aaa在线| 亚洲第一毛片| 亚洲无码天堂| 精品日韩AV| 一区二区无码区| 亚洲精品自拍| 蜜桃视频免费网站| 欧美黄页| 一级A片免费观看| 日本三级久久| 一级性爱毛片| 东京热AV在线| 3d动漫一区二区| 国产videos| 豆花av| 在线观看国产区| 国产一级a毛一级a毛观看视频网站www.jn | 亚洲第一页在线| 欧美成人网站视频| 亚洲精品久久久久毛片A级绿茶 | 一级a一级a爰片免费免免中国A片 一级一级a免一级a做免费线看内裤 | 久久熟女嫩草成人片免费| 伊人网在线视频观看| 亚洲av小电影| 尤物91| 搡BBBB搡BBB搡五十| 国产一毛a一毛a在线观看| 久久国产热视频| 囯产精品宾馆在线精品酒店| 天天撸天天色| 国产69精品久久久久久| 国产又黄又爽| 先锋AV资源站| www.6969成人片亚洲| 东京热久久综合色五月老师| 中文字幕AV网| 人人妻人人爽人人精品| 欧美日本色| AV黄色在线| 大香蕉伊人综合| 肉色超薄丝袜脚交一区二区| 中文字幕熟女| 中文字幕一区二区三区四区五区| 北条麻妃九九九在线视频| 噜噜在线| 在线成人一区二区| 九色麻豆| 中文字幕欧美在线| 亚洲香蕉国产| 人人澡人人爽| 国产在线观看免费成人视频| 午夜亚洲精品| 日皮视频免费观看| 一级a一级a爰片免费免免在线| 五月婷婷丁香在线| 91日韩在线| 99热只有精| 特级毛片片A片AAAAAA| 欧美精品毛片| 先锋资源av在线| 国产色婷婷| 国产无码高清在线观看| 成人小视频在线观看| AV女优天堂| 操逼视频欧美| 午夜性爽视频男人的天堂| 久草在| 欧美一级婬片免费视频黄| 日本黄色视频。| 日韩有码电影| 亚洲啪啪网站| 久久久精品久久久| 日韩国产在线| 亚洲无码av中文字幕| 成人无码毛片| jzzijzzij亚洲成熟少妇在线观看 九色蝌蚪9l视频蝌蚪9l视频成人熟妇 | 日韩中文字幕在线观看视频| 欧美老女人操逼群| 狼人综合在线| 丁香六月婷婷| 中文字幕精品视频在线观看| 91精品一区| 亚洲免费AV在线| 人人干人人澡| 亚洲国产精品成人综合色在线婷婷| 天天干天天日天天色| 黄色大片av| 天堂资源中文在线| 热久久亚洲中文字幕| 日韩在线观看一区二区| 被黑人猛躁4O次高潮| 成人不卡在线| 日韩高清无码一区| 四虎成人在线| 国产一级大片| 国产乱码精品一品二品| 欧美黄视频| 91av在线电影| 3D动漫精品啪啪一区二区下载| 中文色片| 天天插夜夜操| 99视频自拍| 波多野在线视频| 91AV久久| 黄色成人在线免费观看| 日本人妻在线播放| 亚洲成人福利| 免费看片av| 婷婷久久久久| www.91九色| 小视频+福利| 亚洲无码十八禁| 午夜激情视频网站| 无遮挡动态图| 一道本一区| 伊人五月丁香| 欧美一级婬片A片免费软件| 四川少妇bbb| 高清视频一区二区| 影音先锋三级资源| 伊人网在线视频观看| 无码波多野结衣| 东京热这里只有精品| 色色综合热| 成人免费无码婬片在线| 91AV在线免费观看| 大香蕉av在线| 成人小视频在线| 午夜福利干B在线免费小视频| 东京热无码一区| 国产欧美综合视频| 69国产精品成人无码视频色| 粉嫩一区二区三区四区| 91久久国产综合久久91精品网站 | 91蝌蚪久久| 欧美成人在线视频网站| 操一操干一干| 一级A黄片| 嫩草视频在线播放| A片在线观看视频| 黑人毛片91久久久久久| 激情视频网站| 刘玥一区二区| 日本少妇电影| 在线免费看A片| 欧美日韩一区二区三区视频| 97人人草| 天堂网一区二区三区| 亚洲婷婷在线| 亚洲国产欧美日韩在线| 一级调教看片| 国产口爆在线| 亚洲色成人网站www永久四虎| 国产色无码网站www色视频| 天天夜夜久久| 无码免费看| NP玩烂了公用爽灌满视频播放| 中韩AV在线免费观看| 影音先锋成人片| 精品人妻一区二区三区日产乱码 | 少妇熟女一区| 成年人免费网站| 日韩精品人妻一区二区| 一级黄色电影免费| 一级大毛片| 久操人妻| 97人妻人人澡人人| 在线小视频| 久久久青草| 波多野结衣vs黑人巨大| 91干| 成人大香蕉视频| 大鸡吧在线| 露脸老熟女91集合| 欧美日韩高清一区| 美女黄片| 先锋成人av| 国产激情欧洲在线观看一区二区三区| 国产插穴| 亚洲国产精品成人综合色在线婷婷| 欧美成人性爱网| 黑人AV在线观看| 长腿女神打扫偷懒被主人猛操惩罚| 欧美性爱视频在线观看| 国产小视频在线看| 久久天天| jizzjizz欧美| 蜜桃免费网站| 久久丁香| 欧美久久视频| 闺蜜AV| a视频在线| 久久牛牛| a片小视频| 99内射| 国产精品揄拍100视频| 日韩中文久久| 国产91无码精品秘入口新欢| 亚洲成人在线网| 日本女人高潮视频| 青青草无码| 欧美在线中文| 国产午夜影视| 日韩AV毛片| 亚洲精品久久久久久久久蜜桃 | 爱搞搞视频| 特写毛茸茸BBwBBwBBw| 国产顶级理伦| 久久视频免费| 黄色无码视频在线观看| 国产91探花系列在线观看| 麻豆国产一区二区三区四区| www伊人| 六月丁香五月| 成人欧美大片黄18| 97视频国产| 午夜亚洲AV永久无码精品麻豆| 人人操人人插| 人妻精品久久久久中文字幕69| av一二三区| 影音先锋久久| 黄色特级毛片| 日屄电影| 屁屁影院国产第一页| 先锋影音AV在线| 婷久久久| 四川妇搡BBBB搡BBBB| 成人做爰A片AAA毛真人| 激情视频免费在线观看| 95四川乱子伦视频国产| 日韩a| 日韩免费一级| 极品少妇久久久| 亚洲欧美精品AAAAAA片| 亚洲黄色无码| 丁香五月婷婷五月天| 午夜久久福利| 开心四房播播第四婷婷| 99精品在线免费观看| 97精品一区二区三区A片| 日韩精品毛片一区二区视频免费 | 少妇精品久久久久久久久久| 黄色毛片av| 国产精品久久久久久久久久王安宇| 亚洲性爱在线播放| 人人人射| 成人片天天看片欧美一级| 在线观看欧美日韩| 欧美在线无码| 91丨PORN首页| 国产探花视频在线免费观看| 欧美综合在线观看| 影音先锋国产AV| 中国老女人日逼| 五夜福利成人视频| 久久xx| 亚洲国产成人91精品| 青青青国产在线| 伊人色色视频| 天天摸天天操| 神马影院午夜福利| 伊人大香在线| 黄色一级生活片| 肏屄网站| 水蜜桃91| www.五月丁香| 久操免费在线观看| 长腿女神打扫偷懒被主人猛操惩罚| 一区二区三区电影高清电影免费观看 | 精品| 日韩精品一区二区三区使用方法| 九九精品在线观看| 天天爆操| 中文字幕AV免费观看| 黄色操逼视频| 免费的A片| 成人综合网站| 五月天婷婷无码| AV无码毛片| 色77777| 亚洲高清无码中文字幕| AV乱伦小说| 国产91无码精品秘入口| 麻豆黄网| 黄片AV| 免费一级做a爱片毛片A片小说 | 无码成人在线| 91人妻人澡| 91视频美女内射| 伊人大香蕉综合| 中文国产字幕| 精东影业AV无码精品| 91久久久久久久久久久久18| 欧美三级免费| 三洞齐开Av在线免费观看| 影音先锋亚洲资源| 久久噜噜| 欧美伊人久久| 久草大香蕉视频| 六月婷婷五月天| 91无码视频| 一级A片60分钟免费看| 亚洲A级| 国产精品无码在线播放| 真人一级片| 欧美XXXXBBBB| 在线不卡免费Av| 国产有码| 无码乱伦视频| 波多野结衣av中文字幕| 国产又粗又猛又爽又黄91精品 | 精品一区二区三区免费| 操操操综合| 亚洲无码一区二区三区蜜桃 | 五月丁香婷婷综合| 欧美丰满少妇人妻精品| 第四色激情网| 亚洲AA| 在线色| 午夜视频18| 黄色成人视频网站| 日韩码线观看视频| 青青草手机视频| 在线中文av| 欧美色视频在线观看| 国产com| 水蜜桃成人网| 91在线电影| 3D精品啪啪一区二区免费| 佳佳女王footjob超级爽 | 亚洲无码在线免费观看视频| 青草精品| 日本熟妇高潮BBwBBwBBw| 亚洲无码色色| 99久久精品国产成人一区二区| 91麻豆国产在线| 五月婷婷色欲| 日本天堂Tv视频在线观看| av女人天堂| 午夜在线观看视频18| 亚洲日本视频| 色婷婷一区二区三区久久午夜| 国产性爱自拍视频| 亚洲伦乱| 骚骚肥肥一区二区三区| 人人操人人看人人干| 中文字幕视频一区| 免费高清无码| 操逼视频大全| 91精品综合| 亚洲无aV在线中文字幕| 日韩黄色无码视频| 欧美日韩精品在线视频| h片网站在线观看| 成人免费乱码大片a毛片蜜芽 | 8090操逼网| 国产女主播在线播放| 亚洲性爱专区| 黄色成人网站在线观看| 国产精品视频播放| 五月天婷婷视频| 青青成人| 久久青青视频| 天天爽夜夜爽人人爽| 国产嫩BBwBBw高潮| 玖玖资源站中文字幕| 91AV电影网| 亚洲自拍中文字幕| av牛牛| 中文字幕精品视频在线| 亚洲午夜久久| 欧一美一婬一伦一区二区三区自慰国 | 亚州V| 亚洲无码高清一区| 欧美伦妇AAAAAA片| 无码国产高清| 北条麻妃JUX-869无码播放 | 国产精品色视频| 久久久人妻熟妇精品无码蜜桃| 国产九九在线视频| 波多野结衣高清视频| 高清无码在线免费观看视频| 成人色色| 成人福利电影| 日韩无码AV中文字幕| www.91在线看| 人妻熟女88AⅤ| 日韩黄色激情| 2024av在线| 青青草原视频在线免费观看| 四川揉BBB搡BBB| 按摩性高湖婬AAA片A片中国| 日韩一级性爱| 男人天堂无码av| 亚洲最新视频| 影音先锋人妻资源| 性爱网站免费看| 国产和日韩中文字幕| 长泽梓黑人初解禁BDD07| 国产午夜男女性爱| 国产精品天天AVJ精麻传媒| 精品无码一区二区| 免费射精一二三区| 日韩综合色视频导航| 欧美日逼超碰| 亚洲AV官方网站| 洞av| 亚洲人内射片又| 激情小视频国产在线播放| 日本视频网| 大香蕉大香蕉大香蕉| 91人妻人人澡人人爽人人精吕| 久久91人妻无码精品蜜桃HD| 亚洲无码激情在线| 成人免看一级a一片| 三级日韩| 日本在线不卡一区| 亚洲AV无码精品岛国| 西西人体BBBBBB| 无码视频一二三区| 欧美男女操逼视频| 国产农村乱婬片A片AAA图片| 欧美AAAAAAAAAA特级| 成人一区二区在线观看| 亲子伦一区二区三区观看方式| 免费高清无码| 韩国免费一级a一片在线播放 | 日本色色网站| 亚洲精品无码电影| 日韩欧美中文在线| 亚洲的天堂的αⅴ| 久久不卡| 一区二区三区成人| 就要操| 在线观看免费完整版中文字幕视频| 久久亚洲日韩天天做日日做综合亚洲 | 精品国产成人a在线观看| 亚洲欧洲综合| 色天天| 99免费精品视频| 亚洲色久| 国产色视频| 少妇无码| 日韩精品一区二区三区四在线播放 | 青草视屏| 黄色av免费在线| 狠狠地日| 天天cao| 无码三| 精品av| 欧美狠狠操| 亚洲天堂在线免费观看| 日韩在线观看| 日本的黄色视频| 久久综合成人| AV-ThePorn| 免费日B视频| 欧美午夜爱爱| 囯产精品99久久久久久WWW| 色综合天天综合| 欧美一级黃色A片免费看小优视频| 高清视频一区二区| 成人在线观看网站| 国产黄色大片| 成人免费毛片果冻日本| 蜜臀成人片| 久草在在线| 国产亚洲欧美视频| 国产精品黄色片| 911精品国产一区二区在线| 欧美日韩成人视频| 午夜国产码网站码| 亚洲五月婷婷| 欧美成人aaa| 国产av电影网| 亚洲成人资源| 99天天操| 婷婷丁香五月社区亚洲| 亚洲精品97久久中文字幕| 777777视频| 色悠悠久久| 北条麻妃无码在线视频| 开心五月色婷婷综合开心网| 亚洲国产另类无码| 男女操逼视频网站| 欧美精产国品一区二区区别 | 一本之道高清数码大全| 北条麻妃JUX-869无码播放| 久久99人妻无码精品一区| 欧美熟妇精品黑人巨大一二三区| 伊人久久影院| 国产免费黄色视频| 欧美,日韩,中文字幕| 亚洲婷婷视频| 欧美BBWBBWBBWBBWBBwBBW | 无码精品人妻| 成人网站毛片| 国产精品AV在线| 俺去俺来也在线www色官网| 日本一区二区网站| 日韩在线综合网| 亚洲视频www| 亚洲人妻系列| 免费无码成人片在线播放| 亚洲AV无码成人精品| 日韩顶级毛片| 2018天天操天天干| 啊啊啊啊啊在线观看| 94久久| 婷婷丁香综合| 婷婷五月丁香六月| 4080yy午夜理论片成人| 特级西西444www大胆高清图片| 国产精品精品精品| 久久77777| 激情色播| 青青在线视频| 日韩成人无码特集| 九九五月天| 国产欧美日韩一区二区三区| 日韩黄色小视频| 麻豆91麻豆国产传媒| 大香蕉伊人成人网| 欧美高清一区二区| 西西人体44www大胆无码| 色777| 99精品久久| 影音先锋成人视频| 久久国产香蕉| 欧美色视频一区二区三区在线观看 | 日本欧美在线播放中文| 中文字幕一区二区三区四区在线视频 | 免费网站观看www在线观看| 青青草视频在线观看| 91精品人妻人人爽| 天堂8在线视频| 国产精品成人无码专区| 国产成人AV网站| 91中文字幕| 北条麻妃无码视频在线| 日本久久综合网| 被黑人猛躁10次高潮视频| 天天日天天舔| 男女网站在线观看| 三级无码高清| 91狠狠色丁香婷婷综合久久精品| 白嫩外女BBWBBWBBW| 中文字幕免费在线观看| 五月天深爱激情网| 91大神在线看| 国产欧美日韩| 另类性姿势BBwBBW| 久久久综合网| 激情操逼视频| www.91国产| 99这里只有精品| 五月天AV网站| 刘玥精品国产一区二区三区| 臭小子晚上让你爽个够视频| 日韩无码久久| 不卡精品| 九九九九九九精品| 欧美午夜福利电影| 欧亚无码| 在线一区观看| 囯产精品久久久久久久久免费无码 | 制服丝袜一区| 亚洲福利视频网站| 污视频免费在线观看| 不卡一二三区| 人妻少妇偷人精品久久| 白嫩外女BBwBBwBBw| 九九偷拍视频| 成人性生活影视av| 国产在线色| 亚洲在线视频免费观看| 三级成人网站| 亚洲色一| 免费做a爰片77777| 手机看片久久| 无码不卡一区| 夜夜撸日日| 欧美日韩三区| 欧美性爱香蕉视频| 日本熟妇无码一区二区| 无码精品电影| 超碰青娱乐| 国产免费AV片在线无码| 黄色电影视频网站| 中文视频在线观看| 国产精品无码久久久久成人app | 亚洲高清无码视频大全| 91麻豆精品国产91久久久吃药| 精品视频在线播放| 91AV免费| 香蕉AV777XXX色综合一区| 天天插天天插| 男女草逼视频| 校园春色亚洲无码| 一区二区三区四区久久| 国产欧美毛片| 成人日韩在线| 亚洲A级毛片| 日韩中文字幕一区二区三区| 日韩a√| AV在线免费观看网站| 久久久久久无码日韩欧美电影| 国产乱码精品一品二品| 一区二区三区网| 91大铭哥| 亚洲无码。| 一区二区三区免费看| 一级调教看片| 中文字幕无码影院| 日韩黄频| а√天堂中文最新版8| 国产无码性爱| 亚洲欧洲中文字幕| а√在线中文网新版地址在线| 台湾无码片| 亚洲无码免费在线| 天天爽天天爽夜夜爽| 日韩逼| 国产视频网| 视频国产区| 日韩精品一区二区三区中文在线 | 日韩一区二区三| 男女草逼| 国产性受XXXXXYX性爽| 日韩不卡在线观看| 国产乱子伦日B视频| 久久久久久久AV| 天天干天天日天天色| 91大神久久| 人人干视频| 在线看v| 在线播放日韩| 黄色免费观看网站| 在线黄网| 国产福利电影在线| 黄色影院在线观看|