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

一款自動生成單元測試的 IDEA 插件

共 19029字,需瀏覽 39分鐘

 ·

2022-06-27 22:11




來源:blog.csdn.net/sun5769675/article/details/111043213

今天來介紹一款工具Squaretest,它是一款自動生成單元測試的插件,為什么會用到它?

主要因為最近公司上了代碼質(zhì)量管控的指標(biāo),會考評各個項目的單元測試覆蓋率,以及sonar掃描出來的各種問題,很多老項目老代碼,或者著急交付的項目,單元測試嚴(yán)重缺失,覆蓋率只有5%不到。

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

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

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

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

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

然后你就會看到這里有兩個熟悉的圖標(biāo),第一次的話選擇第二個選項,它會讓你選擇你一下單元測試的模板,因為我已經(jīng)選擇過了,所以我現(xiàn)在演示不回再彈出,但后面我會告訴你怎么更改模板。

選擇第二項后就會彈出一個框看下面這里它自動會識別出當(dāng)前類需要Mock的成員變量,直接點ok

自動會使用類的真實目錄層次在test文件夾中創(chuàng)建出來一個單元測試類,類名就是原類名后加Test

我把代碼貼出來給大家看看它生成出來的是什么樣的,看看嚇不嚇人,牛逼牛逼,7個單元測試方法,秒秒鐘就出來了,各位看官你們自己寫要多久能寫出來,畢竟時間就是金錢??!然后我們執(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);
    }
}

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

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

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

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

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

@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());
            // 過濾字段
            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();
    }

}

同樣的方式我們在實體類上通過Squaretest生成單元測試,然后繼承我上面寫的那個base類,vo的單元測試代碼稍加改動,如下

圖片

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

圖片


我們創(chuàng)建了一個高質(zhì)量的技術(shù)交流群,與優(yōu)秀的人在一起,自己也會優(yōu)秀起來,趕緊點擊加群,享受一起成長的快樂。另外,如果你最近想跳槽的話,年前我花了2周時間收集了一波大廠面經(jīng),節(jié)后準(zhǔn)備跳槽的可以點擊這里領(lǐng)取!

推薦閱讀

··································

你好,我是程序猿DD,10年開發(fā)老司機、阿里云MVP、騰訊云TVP、出過書創(chuàng)過業(yè)、國企4年互聯(lián)網(wǎng)6年從普通開發(fā)到架構(gòu)師、再到合伙人。一路過來,給我最深的感受就是一定要不斷學(xué)習(xí)并關(guān)注前沿。只要你能堅持下來,多思考、少抱怨、勤動手,就很容易實現(xiàn)彎道超車!所以,不要問我現(xiàn)在干什么是否來得及。如果你看好一個事情,一定是堅持了才能看到希望,而不是看到希望才去堅持。相信我,只要堅持下來,你一定比現(xiàn)在更好!如果你還沒什么方向,可以先關(guān)注我,這里會經(jīng)常分享一些前沿資訊,幫你積累彎道超車的資本。

點擊領(lǐng)取2022最新10000T學(xué)習(xí)資料
瀏覽 27
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

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

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 av天堂中文字幕| 久久嫩草国产成人一区| 日本色色视频| 精品人妻一区二区三区日产乱码 | 日本午夜影院| 超碰9999| 亚洲黄色在线观看| 天天干免费视频| 青草精品| 免费国产h| 97精品欧美91久久久久久久| 人妻无码免费视频| 99re视频在线播放| 少妇熟女一区| 九九九九九九国产| 在线观看黄A片免费网站| 午夜激情av| 特一级黄色| 激情视频在线免费观看| www.五月天婷婷| 黄色激情五月| 日韩三级久久| 无码蜜桃一区二区| 婷婷五月天成人社区| 久久精品免费看| 亚洲欧美综合| 亚洲无码视频观看| 亚洲中文字幕在线免费观看视频| 丰满人妻一区二区三区蜜桃视频| 国产精品日韩无码| 黄色片在线观看视频| 色婷婷激情综合网| 中文字幕日本成人| 北岛玲丝袜办公室高跟| 国产aaaaaaaaaaaaa| 吴梦梦一区二区三区| 内射午夜福利在线免费观看视频| 97无码视频| 99热99| 69AV在线视频| 性久久久久久久| 成人欧美视频| 自拍视频在线观看| 欧美A片在线| 欧美大香蕉伊人| 久操视频免费看| 欧美性生交18XXXXX无码| 久久久久亚洲精品| 欧美一区二区三区四| 精品国产AV鲁一鲁一区| 麻豆国产成人AV一区二区三区 | 精精品人妻一区二区三区| 欧美日韩网站| www.日韩欧美| 免费无码AV| 婷婷五月综合在线| 99久在线精品99re8| 欧美第五页| 人人操人人骑| AV资源网站| 99久久夜色精品国产亚洲| 成人毛片18女人毛片真水| 美日韩AV| 国产亲子乱婬一级A片借种| 亚洲无码av网站| 国产黄色Av| 色色色色AV| 青青操青青干| 黄片观看| 国产女人十八水真多| 性猛交AAAA片免费观看直播| 麻酥酥在线视频| 日韩乱码| 婷婷国产| 久草在在线| 少妇一级婬片内射视频| 懂色av懂色av粉嫩av| 色色五月丁香| 亚洲第一成人久久网站| 18成人网站在线观看| 一区无码高清| 高清无码视频免费在线观看| jlzzzjlzzz国产免费观看| 影音先锋在线视频观看| 黄色天堂| 成人丁香| 午夜成人福利片| 99视频在线看| 亚洲综合视频在线| 日韩成人高清无码| 午夜看黄片| 日韩成人在线播放| 日本一区二区不卡| 日本在线免费观看| jizz亚洲| 色卻A| 久久久久亚洲AV成人片| 淫色综合网| 中文无码网站| 亚洲成人A| 九九re| 亚洲欧美在线成人| 成人精品秘久久久按摩下载| 一区二区无码av| 69人妻人人澡人人爽久久| 影音先锋国产AV| 一道本无码在线播放| 成人三级毛片| 色婷婷在线免费视频| 麻豆成人无码精品视频| av电影在线观看| 成人网站在线免费看| 91狠狠综合| 99精品视频免费观看| 国产日韩欧美| 欧美欧美欧美| 激情婷婷亚洲| 国产又粗又大又爽| 激情另类视频| 丝袜毛片| 超碰97在线免费| 99热在线观看精品免费| 国产精品国产精品国产专区不卡 | 天天射天天爽| 久久亚洲天堂| 国产日韩欧美在线| 五月六月丁香激情视频| 青青草国产在线视频| 羞羞涩漫无码免费网站入口| 亚洲午夜无码久久久| 黄色成人视频免费看| 探花无码| 91九色91蝌蚪91窝成人| 久草视频免费| 国产群交| 巨乳无码噜噜噜久久久| 久久婷婷无码视频| 天天爽夜夜爽夜夜爽| 国产九九九九九九| 国产精品一级a毛一级a| 免费黄片网站在线观看| 国产传媒三级| 日韩无码第一页| 亚洲精品成人片在线观看精品字幕| 色老师综合| 久草在在线| 日韩成人一级片| 久久538| 成人福利网| 国产精品无码怀孕软件| 超碰在线免费| 久久国产精品在线| 99久免费视频| 综合激情网站| 亚洲成人精品视频| 欧美精品成人| 國產美女AV操逼網站| 国产伊人自拍| 2021天天夜日| 亚洲天堂手机在线| 好吊妞在线| 久久综合99| 国产精品秘久久久久久网站| 国产精品夜夜爽3000| 免费色色网站| 亚洲国产无码在线观看| 亚洲无码999| 欧美激情综合色综合啪啪五月| 日韩在线| 国产精品一级A片| 久久a视频| 91人妻人人澡人人爽人妻| 国产日韩欧美视频| 欧美日韩激情| 久久丁香五月天| 高清无码内射视频| 狠狠干综合网| 18毛片| 天天干天天日天天干| 亚洲无码视频在线观看高清| 噜噜噜AV| 色婷五月| 东京热在线免费观看| 日日干天天干| av三级片在线播放| 91人人妻人人爽| 国产毛片777777| 久久99久久99久久99人受| 99视频免费| 午夜av在线播放| 2016超碰| 中文有码在线观看| 国产精品性爱| 久草新| 欧美午夜影院| 一级特黄色| 人人干人人艹| 特级丰满少妇免费观看| 色哥网在线一区| 伊人9| 91蝌蚪视频在线播放| 北条麻妃在线一区| 特级西西WWW888| 欧美色视频在线观| 亚洲高清无码视频在线播放| 日本色视频| 婷婷成人电影| 天天操免费| 黄色大片视频| 国产无码二区| 天天日天天色| 女人高潮天天躁夜夜躁| 手机看片国产| 青娱乐自拍偷拍| 天天爱天天射| 亚洲三级自拍| 色婷婷五月天激情| 99热在线免费| 新亚洲天堂男子Av-| 欧美a∨| 国产乱伦内射| 河南少妇搡BBBB搡BBBB| 色色一级| 精东av| 久久精品国产99精品国产亚洲性色 | 欧美性爱永久| 国产自慰一区| 国产AV在| 麻豆天美蜜桃91| 日韩大片在线| 91无码高清| 欧美黄视频| av福利在线观看| 国产性猛交╳XXX乱大交| 狠狠干2021| 日韩三级电影| 狠狠色狠狠撸| 欧美亚洲日韩一区二区三区| 中文字幕日韩人妻| 日韩免费网| 亚洲视频在线视频| 狠狠操综合网| 五月丁香婷婷成人| 夜夜撸天天干| 91综合视频| 亚洲人成777| 色吊丝中文字幕| 尤物视频网| 毛片在线看片| 北条麻妃一区二区三区在线播放| 在线无码视频播放| 久久青青婷婷| 性BBW| 亚洲AV无码电影| 777免费观看成人电影视频| 亚洲免费天堂| 中文在线字幕免费观看电视剧大全| 91久久| 一边做一边说国语对白| 亚洲AV无码免费| 人人妻人人澡人人爽久久con| 成人一级黄色片| 黄色AV免费| 天天影视综合网免费观看电视剧国产| 麻豆秘在线观看国产| 欧美国产日本| 成人在线免费观看国产| 成人一区二区在线观看| 丁香五月色情| 做爱的网站| 免费性片| 久久草在线观看| 俺也去射| 天天草天天干| 操逼一区| 国产精品成人在线视频| 五月丁香大香蕉| AV一二区| 婷婷五月开心五月| 男女av| 免费看国产黄色| 亚欧成人| 欧美精品久久久久久久久爆乳| 亚洲男人的天堂av| 日本乱伦视频| 夜夜撸夜夜操| 国产啊啊啊啊| 久久永久免费精品人妻专区| 91人妻人人爽人人澡| 日本AⅤ在线| 午夜成人国产| 亚洲无码观看视频| 丁香五月少妇| 亚洲无码专区视频| 日韩A片在线观看| 黄色人妻| 北条麻妃在线观看| 亚洲成人69| 色骚综合| 中文字幕av久久波多野结| 国精品无码人妻一区二区三区| 日韩高清无码不卡| 日区无码| 这里只有精品久久| 阿宾MD0165麻豆沈娜娜| 99国产在线观看免费视频| 国产高清无码免费| 狠狠色狠狠撸| 97成人人妻一区二区三区| 在线天堂v| 久久艹免费视频| 人妻少妇av中文字幕乱码牛牛| 国产热99| 538在线视频| 国产精品小电影| 黄页网站免费在线观看| 日B视频网站| 国精产品一二四区黑人| 特一级黄色电影| 五月天婷婷激情网| 短发半推半就AV| 日韩一级成人片| 天天操综合网| 四川少妇搡bbw搡bbbb| 亚洲成人在线免费观看| 国产av二区| 日皮视频免费观看| 色噜噜狠狠一区二区三区| 婷婷色亚洲| 天天日穴| 久久666| 国产91探花| 亚洲AV无码乱码国产精品蜜芽| 91白浆肆意四溢456| 精品久久一区二区| 欧洲黑人成人A版免费视频| 成人无码日韩精品| 亚洲视频一区| 人人干人人上| 国产免费黄色视频| 黄色a级片| 黄色成人网站在线观看| 亚洲另类自拍| 亚洲国产成人精品女人久久久| 91人妻无码精品一区二区三区| 97爱| 婷婷看片| 超碰免费在线| 一区二区有限公司| 天天影视综合网免费观看电视剧国产 | 天天中文字幕| 91内射| 亚洲婷婷网| 中文字幕乱伦性爱| 中文字幕第10页| 欧美色乱| 91ThePorn国产在线观看| 亚洲福利天堂| 99黄色| 久久久aaa| 水蜜桃91| 91破处网站| 陈冠希和张柏芝mv| 波多野结衣无码一区| 午夜熟睡乱子伦视频| 日韩a√| 日韩AV在线免费观看| 久久一二三四| 熟女探花精选| 黄色大片免费在线观看| 无码一区二区av| 欧美成人三级在线| 欧美国产日韩视频| 亚洲成人视频在线| 操逼视频在线免费看| 超碰狠狠操| 天天综合在线观看| 天天影视综合网免费观看电视剧国产 | 无码V | 中文字幕高清无码免费视频| 黄色A片免费看| 蝌蚪窝免费在线视频| 一道本一区二区| 特级西西WWW无码| 亚州成熟少妇视频在线观看| 大香蕉9999| 色999网址| 超碰人人在线观看| 99久久久久久久无码| 亚洲中文字幕2025| 中文字幕人妻丝袜二区电影| 操老女人逼| 亚洲在线第一页| 影音先锋人妻资源| 四季AV综合网站| 少妇BBBB| 东京热一区二区| 国产成人精品av在线观看| a片在线电影网| 黄片大全免费看| 中文字幕在线无码观看| 国产成人99久久亚洲综合精品| 精品无码视频在线| 亚洲欧美日韩黑料吃瓜在线观看| 日韩性爱小视频| 91麻豆国产在线| 成人免费无码| 草逼视频免费看| 91黄色毛片| 日本黄色视频网址| 五月天综合久久| 在线黄网| av在线免费观看网址| 黄色一级在线| 免费在线成人网站| 91亚洲精品视频在线| 天天日很很操| 亚洲精品人伦一区二区| 日韩视频中文字幕在线| 黄片视频大全| 99久久婷婷国产综合精品漫 | 黄片视频链接| 国产一级a爱做片免费☆观看| 黄色网页在线| 男同人到爽无套狂欢| 激情五月天网址| 人人摸人人爱人人操| 国产黄色录像| av在线资源观看| 黄色福利网| 99欧美| 极品久久| 无码人妻丰满熟妇区17水蜜桃| 综合网久久| 毛片精品| 五月天深爱激情网| 东方成人AV| 四川BBBBBB搡BBBBB| 麻豆蜜桃91无码| 人妻人人爱| 蜜桃91精品入口| 日韩无码一卡| 人人操人人操人人| 男女日皮的视频| 国产成人三级在线播放| 色色天堂| 91爱搞| 日韩做爱网站| 乱码中文字幕日韩欧美在线| 国产内射无码| 91久久午夜无码鲁丝片久久人妻| 久久亚洲福利视频| 人人肏| 五月天三级片| 久久综合成人| 日韩精品人妻一区二区| 中文在线字幕免费观看| 操逼视频下载| 国产精品激情| 奇米狠狠色| 丰滿人妻-区二区三区| 亚洲激情性爱| 91人妻人人爽| 一级特黄录像免费播放下载软件| 西西444WWW无码视频软件功能介绍| 日韩无码影院| 一级性爱| 大香蕉草久| 欧美综合网在线观看| 免费草逼视频| 黄色无遮挡| 性爱av在线观看| 免费黄色视频在线观看| 自拍偷拍一区| 色色五月丁香婷婷| 99视频在线免费| 东京热高清无码| 俺去草| 成人无码区亚洲AV久久| 日本a一级片| 黄色A片网站| 日韩AV小电影| 日韩一区二区无码视频| 欧美精品久久久久久久久爆乳| 免费日韩| 国产精品不卡一区二区三区| 中文字幕一区二区三区人妻电影| 日韩www| AV片在线观看| 国产精品内射视频| 国产无码电影网| 国产在线观看免费成人视频 | 好吊妞在线| 91人妻日韩人妻无码| 精品交换一区二区三区无码| 色婷婷视频在线观看| 99热99在线| 熟女在线视频| 国产在线欧美| 亚洲Japanese办公室制服| 安徽妇搡BBB搡BBBB户外老太太 | 日本黄色视频在线播放| 91热久久| 欧美国产在线观看| 日韩高清精品在线| 中文字幕日韩人妻| 天堂在线中文字幕| 国产在线观看91| 免费欧美成人网站| 制服毛片| 中日韩欧美一级A片免费| 日韩黄色视频网站| 加勒比人妻| 欧美十区| 亚洲欧洲有码在线| 免费无码国产在线观看快色| 五月丁香亭亭| www.日韩av| 国产区视频| 亚洲AV无码一区二区三竹菊| 高h视频在线观看| 日韩小黄片| 超碰日逼| 9999re| 最新av资源| 天天色色| 色婷婷影院| 日韩熟妇无码中文字慕| 黄频视频| 婷婷五月天免费视频| 日本操B久久| 天天日天天舔| 国产精品1区| 夜夜夜叫天天天做| 二区三区视频| 久久综合成人| 亚洲vs无码秘蜜桃少妇小说| 无码人妻一区二区一牛影视| 91网站免费在线观看| 无码水蜜桃一区二区| 欧美AAA黄片| 日韩日日操| 日韩一级在线| 国产日韩精品无码去免费专区国产| caopro| 中文字幕aV在线| jt33免费观看高清| 91福利影院| 九九中文字幕| 无码中文视频| A片在线免费看| 99视频久久| 青青草原视频在线| 伊人成人免费视频| 天天操视频网站| 国产精品欧美综合在线| 激情一区二区| 91探花国产综合在线精品| 老婆中文字幕乱码中文乱码| 人妻天天爽夜夜爽| 天天撸天天日| 国模无码在线| 高清无码免费在线视频| 在线观看免费黄色视频| aⅴ视频| 91久久久久久久| 精品国产成人a在线观看| 精品国产va久久久久久久| 亚洲熟妇在线观看一区二区| 四川BBB搡BBB爽爽爽欧美| 性爱AV在线观看| 99热大香蕉| 野花AV| 伊人久久大香线蕉av一区| 日韩激情网站| 免费18禁网站| 精品成人在线视频| av性爱在线| 337P大胆粉嫩银噜噜噜| 亚洲北条麻妃一级A片| 成人影视亚洲| a在线| 激情一区二区三区| 69国产精品成人无码| 亚州V| 午夜久久电影| 免费内射网站| 欧美不卡一区二区| 欧洲a视频| 亚洲视频在线观看中文字幕| 亚洲国产女人| 国产乱伦不卡| 欧美三级在线播放| 操操操操操| 日韩高清无码中文字幕| 一区二区高清视频| 狠狠躁夜夜躁人爽| 欧美XXX视频| 亚洲精品伊人| 特黄特色大片BBBB| 欧美久久久久久久| 91欧美精品成人综合在线观看| 国产又粗又大又爽| 精品多人P群无码视频| 久久婷婷婷| 高清操逼| 天堂资源地址在线| 国产曰韩欧美综合另类在线| 久热久热| 激情乱伦视频| 超碰日韩| 久久99久久99久久99国内少妇精品 | 国产A片免费| 最新日韩无码| 日本免费不卡| 欧美激情三区| 国产又粗又长视频| www.人人摸| 性爱小说视频| 国产三级无码视频| 91无码影院| 一级特黄A片| 欧美粗大| 翔田千里无码一区| 久久国产一区二区| 中文字幕一区二区三区人妻电影| 婷婷爱五月天| 国产一级AA大片毛片| 猫咪亚洲AV成人无码电影| 人妻少妇被猛烈进入中文字幕 | 国产精品国产精品国产专区不| 夜色福利在线| 北条麻妃黄色视频| 蜜桃久久久亚洲精品| 久久色资源| 国产熟女| 五月无码| 亚洲国产无码在线| 日本在线视频一区二区| 午夜福利aaa| 91免费成人电影| 亚洲自拍网站| 日本高清无码在线观看| 国产精品视频免费在线观看| 亚洲无码一二三| 亚欧成人网站| 91jiujiu| 最新日韩无码| 色色777| 亚洲成人性爱网站| 99国产精品免费视频观看8| 亚洲成人精品在线| 精品一二三| 在线免费A片| 国产一级免费| 91狠狠综合久久久久久| 91久久婷婷| 色综合久久88色综合天天99| 国产白丝在线| 在线视频你懂得| 婷婷性爱| 91人妻无码| 成人网站在线看| 白洁91视频| 中文字幕东京热加勒比| 亚州精品国产精品乱码不99勇敢| 色天使色天堂| 日韩高清精品在线| 亚洲Av在线观看| 91人妻人人澡人人爽人人精品一| 天天色天天色| 美女人人操| 国产精品理论片| 波多野59部无码喷潮| 亚洲先锋影音| 91狠狠色丁香婷婷综合久久精品| 久久精品苍井空免费一区二 | 黄色国产在线观看| 无码精品ThePorn| 99re视频| 影音先锋av在线资源站| aaa免费| 一区二区成人免费视频| 亚洲欧美另类图片| 欧美成人综合一区| 蜜桃视频app| 国内不卡一卡二视频| 在线免费观看视频黄| 国产精品三| 国产日韩在线观看视频| 黄色A片在线观看| 高清国产mv在线观看| 影音先锋麻豆| 国产天堂| 成人夜间视频| 精品乱子伦一区二区三区毛| 日韩成人无码影片| 精品AAA| 日本黄色片视频| 精品无码一区二区Av蜜桃| 九九香蕉视频| 日韩精品视频一区二区| 亚洲无码网| 午夜av在线| 白虎高清无码大尺度免费在线观看| 先锋影音资源站av每日资源在线| 黄色免费福利视频| 日韩三级黄色| 久久国产一区| 精品99999| 亚洲中文字幕免费视频| 在线视频日韩| 99视频免费| 黄色大片久草| 亚洲日日干| 国产日韩一区二区三免费高清| 亚洲人成人无码.www粉色| 欧美伊人久久| 啊啊啊啊啊网站| 天堂网| 无码A片| 欧美日韩狠狠操在线观看视频| 人妻少妇被猛烈进入中文字幕 | 九九偷拍视频| 韩国GOGOGO高清| 日本久久精品| 超碰人人人人人人人人| 国产中文字幕av| 天天爱天天爽| 特级西西44www无码| 大鸡吧在线观看| 中文午夜福利| 国产精品女人精品久久久天天| 国产有码在线观看| 日本黄色视频在线免费观看| 人人操人人骑| 99热99精品| 中文字幕乱妇无码Av在线| 亚洲欧洲久久电影| 欧美激情伊人| 伊人色五月天| 成人AV片导航| 四虎精品一区二区| 中文字幕在线免费视频| 亚洲欧洲久久电影| 99久久人妻精品免费二区| 热九九热| 一级a免一级a做免费线看内裤的注意事项| 日韩毛片中文字幕| 日日摸日日| 日韩一级片| 先锋影音亚洲无码av| 91一起草高清资源| 亚洲va在线| 草久影院| 日本黄色免费视频| 久久久18禁一区二区三区精品| 国产精品免费久久| 五月婷在线观看| 色色777| 狠狠操综合网| 色色色色色色网站| 亚洲精品日韩综合观看成人91| 超碰人人妻| 成人大香蕉网| 一区二区三区毛片| 色图在线观看| a片在线免费| 五月婷视频| 国产精品免费观看视频| 97久久精品国产熟妇高清网| 成人精东影业JDAV3密友| 婷婷丁香五月在线| 日本一区二区视频在线| 91免费高清视频| 成人免费无码| 日本成人午夜福利| 亚洲三级视频在线播出| 在线观看国产小视频| 欧美夜夜| 波多野结衣视频网站| 国产精品一级二级三级| 狼色AV| 激情伊人| www.51av| 日本少妇电影| 高清不卡一区二区| 不卡在线| 成人激情综合网| 丁香六月婷婷久久综合| 干妞网免费视频| 高清无码不卡在线观看| 大香蕉久久久久| 免费看a| 国产高清精品无码| 亚洲天堂婷婷| 深爱五月激情| 91精品人妻一区二区三区蜜桃| 成人免看一级a一片| 91久久久久久久久久久久18| 日韩天天| 中文字幕无码在线播放| 亚洲人在线观看| 国产污视频在线观看| 任我操在线视频| 青娱乐亚洲领先| 狠狠色狠狠操| 久久波多野结衣一区二区| 97色色超碰| av毛片| 日韩成人无码特集| 亚洲无码色色| 亚洲五月婷| 柠檬福利第一导航| 色噜噜狠狠一区二区三区300部| 一区二区三区四区五区无码| 久久久噜噜噜久久中文字幕色伊伊| 色逼高清| 爱爱爱网址| 免费播放婬乱男女婬视频国产| 大香蕉操逼视频| 麻豆国产成人AV一区二区三区 | 日日操人人操| 国产又大又粗| 亚洲成人av| 日韩精品网址| 伊人蕉久| 一级电影网| 91香蕉国产成人App| 精品美女视频| 国产黄色在线免费观看| 日本欧美在线观看高清| 欧美特级黄| 91爱搞| 少妇一级片| 一本大道久久久久| 91无码AⅤ在线| 人人干人人爽| 欧美性爱免费在线视频| 亚洲黄色电影网| 91人妻精| 波多野结衣av在线观看窜天猴 | 親子亂子倫XXXX| 成人午夜无码| 亚洲福利视频网| 91操美女视频| 91久久久久久久18| 国产在线观看黄色| 中文字幕在线看成人电影| 91理论片| 2025天天干| 淫一区二区| 国产成人视频免费在线观看| 久久噜噜噜精品国产亚洲综合| 奇米影视色偷偷| 亚洲成年人在线| 北京熟妇槡BBBB槡BBBB| 骚白虎一区| 人人看,人人摸| 国产小骚逼| 午夜成人小视频| 黄色成人在线观看视频| 人人插人人干| 久久精品国产亚洲AV麻豆痴男| 天天拍天天射| 久久精品国产亚洲| 亚洲欧美精品AAAAAA片| 尿在小sao货里面好不好| 人人干人人干| 91国产视频网站| AV资源网站| 国产视频导航| 精品久久久久久亚洲| 日韩欧美国产精品| 亚洲免费在线观看| 国产一区二区不卡亚洲涩情| 色婷婷激情| 国产91探花系列在线观看| 天堂网av2025| 暗呦网一区二区三区| 俺去了俺来也| 777777国产7777777| 女生被操网站| 操女人的网站| 日韩一级无码特黄AAA片| 久久肥妞操| 亚洲在线成人| av电影在线观看| www插插| 人人草大香蕉| 91精品人妻一区二区| 麻豆一区在线| 91绿帽人妻-ThePorn| 中文亚洲精品字幕电影| 日本一级大片| 黄片无码| 伊人久久精品| 国产精品精品| 成人尤物网站| 国产又爽又黄免费网站在线|