老司机夜插-理伦理片-理伦片免费-理伦片免费观看-理伦片免费看-理伦日韩-理论福利片-理论片第一页-理论片电影-理论片理论

金喜正规买球

可靠的功能測試--Espresso和Dagger2

轉帖|行業資訊|編輯:龔雪|2016-01-19 10:03:37.000|閱讀 599 次

概述:Dagger2已經成為眾多Android開發者的必備工具, 是一個快速的依賴注入框架,由Square開發,并針對Android做了特別優化, 已經被Google進行Fork開發. 不像其他的依賴注入器, Dagger2沒有使用反射, 而是使用預生成代碼, 提高執行速度。

# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>

可靠的功能測試, 意味著在任何時候, 獲取的測試結果均相同, 這就需要模擬(Mock)數據. 測試框架可以使用Android推薦的Espresso. 模擬數據可以使用Dagger2, 一種依賴注入框架。

單元測試通常會模擬所有依賴, 避免出現不可靠的情況, 而功能測試也可以這樣做. 一個經典的例子是如何模擬穩定的網絡數據, 可以使用Dagger2處理這種情況。

Talk is cheap! 我來講解下如何實現。

Github

1. 配置依賴環境

  • Lambda表達式支持
  • Dagger2依賴注入框架
  • RxAndroid響應式編程框架
  • Retrofit2網絡庫框架
  • Espresso測試框架
  • DataBinding數據綁定支持
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    }
}

// Lambda表達式
plugins {
    id "me.tatarka.retrolambda" version "3.2.4"
}

apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt' // 注釋處理

final BUILD_TOOLS_VERSION = '23.0.1'

android {
    compileSdkVersion 23
    buildToolsVersion "${BUILD_TOOLS_VERSION}"

    defaultConfig {
        applicationId "clwang.chunyu.me.wcl_espresso_dagger_demo"
        minSdkVersion 16
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "clwang.chunyu.me.wcl_espresso_dagger_demo.runner.WeatherTestRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    // 注釋沖突
    packagingOptions {
        exclude 'META-INF/services/javax.annotation.processing.Processor'
    }

    // 使用Java1.8
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    // 數據綁定
    dataBinding {
        enabled = true
    }
}

final DAGGER_VERSION = '2.0.2'
final RETROFIT_VERSION = '2.0.0-beta2'

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    // Warning:Conflict with dependency 'com.android.support:support-annotations'.
    // Resolved versions for app (23.1.1) and test app (23.0.1) differ.
    // See //g.co/androidstudio/app-test-app-conflict for details.
    compile "com.android.support:appcompat-v7:${BUILD_TOOLS_VERSION}" // 需要與BuildTools保持一致

    compile 'com.jakewharton:butterknife:7.0.1' // 標注

    compile "com.google.dagger:dagger:${DAGGER_VERSION}" // dagger2
    compile "com.google.dagger:dagger-compiler:${DAGGER_VERSION}" // dagger2

    compile 'io.reactivex:rxandroid:1.1.0' // RxAndroid
    compile 'io.reactivex:rxjava:1.1.0' // 推薦同時加載RxJava

    compile "com.squareup.retrofit:retrofit:${RETROFIT_VERSION}" // Retrofit網絡處理
    compile "com.squareup.retrofit:adapter-rxjava:${RETROFIT_VERSION}" // Retrofit的rx解析庫
    compile "com.squareup.retrofit:converter-gson:${RETROFIT_VERSION}" // Retrofit的gson庫
    compile 'com.squareup.okhttp:logging-interceptor:2.6.0' // 攔截器

    // 測試的編譯
    androidTestCompile 'com.android.support.test:runner:0.4.1' // Android JUnit Runner
    androidTestCompile 'com.android.support.test:rules:0.4.1' // JUnit4 Rules
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1' // Espresso core

    provided 'javax.annotation:jsr250-api:1.0' // Java標注
}

Lambda表達式支持, 優雅整潔代碼的關鍵。

// Lambda表達式
plugins {
    id "me.tatarka.retrolambda" version "3.2.4"
}

android {
    // 使用Java1.8
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

Dagger2依賴注入框架, 實現依賴注入. android-apt使用生成代碼的插件。

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    }
}

apply plugin: 'com.neenbedankt.android-apt' // 注釋處理

dependencies {
    compile "com.google.dagger:dagger:${DAGGER_VERSION}" // dagger2
    compile "com.google.dagger:dagger-compiler:${DAGGER_VERSION}" // dagger2
    provided 'javax.annotation:jsr250-api:1.0' // Java標注
}

測試, 在默認配置中添加Runner, 在依賴中添加espresso庫。

android{
    defaultConfig {
        testInstrumentationRunner "clwang.chunyu.me.wcl_espresso_dagger_demo.runner.WeatherTestRunner"
    }
}

dependencies {
    testCompile 'junit:junit:4.12'

    // 測試的編譯
    androidTestCompile 'com.android.support.test:runner:0.4.1' // Android JUnit Runner
    androidTestCompile 'com.android.support.test:rules:0.4.1' // JUnit4 Rules
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1' // Espresso core
}

數據綁定

android{
    // 數據綁定 
    dataBinding { 
        enabled = true 
    }
}

2. 設置項目

使用數據綁定, 實現了簡單的搜索天功能。

/**
 * 實現簡單的查詢天氣的功能.
 *
 * @author wangchenlong
 */
public class MainActivity extends AppCompatActivity {

    private ActivityMainBinding mBinding; // 數據綁定
    private MenuItem mSearchItem; // 菜單項
    private Subscription mSubscription; // 訂閱

    @Inject WeatherApiClient mWeatherApiClient; // 天氣客戶端

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ((WeatherApplication) getApplication()).getAppComponent().inject(this);
        mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
    }


    @Override public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_activity_main, menu); // 加載目錄資源
        mSearchItem = menu.findItem(R.id.menu_action_search);
        tintSearchMenuItem();
        initSearchView();
        return true;
    }

    // 搜索項著色, 會覆蓋基礎顏色, 取交集.
    private void tintSearchMenuItem() {
        int color = ContextCompat.getColor(this, android.R.color.white); // 白色
        mSearchItem.getIcon().setColorFilter(color, PorterDuff.Mode.SRC_IN); // 交集
    }

    // 搜索項初始化
    private void initSearchView() {
        SearchView searchView = (SearchView) MenuItemCompat.getActionView(mSearchItem);
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override public boolean onQueryTextSubmit(String query) {
                MenuItemCompat.collapseActionView(mSearchItem);
                loadWeatherData(query); // 加載查詢數據
                return true;
            }

            @Override public boolean onQueryTextChange(String newText) {
                return false;
            }
        });
    }

    // 加載天氣數據
    private void loadWeatherData(String cityName) {
        mBinding.progress.setVisibility(View.VISIBLE);
        mSubscription = mWeatherApiClient
                .getWeatherForCity(cityName)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(this::bindData, this::bindDataError);
    }

    // 綁定天氣數據
    private void bindData(WeatherData weatherData) {
        mBinding.progress.setVisibility(View.INVISIBLE);
        mBinding.weatherLayout.setVisibility(View.VISIBLE);
        mBinding.setWeatherData(weatherData);
    }

    // 綁定數據失敗
    private void bindDataError(Throwable throwable) {
        mBinding.progress.setVisibility(View.INVISIBLE);
    }

    @Override
    protected void onDestroy() {
        if (mSubscription != null) {
            mSubscription.unsubscribe();
        }
        super.onDestroy();
    }
}

數據綁定實現數據和顯示分離, 解耦項目, 易于管理, 非常適合數據展示頁面。

在layout中設置數據。

    <data>
        <variable
            name="weatherData"
            type="clwang.chunyu.me.wcl_espresso_dagger_demo.data.WeatherData"/>
    </data>

在代碼中綁定數據。

mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
mBinding.setWeatherData(weatherData);

搜索框的設置。

    @Override public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_activity_main, menu); // 加載目錄資源
        mSearchItem = menu.findItem(R.id.menu_action_search);
        tintSearchMenuItem();
        initSearchView();
        return true;
    }

    // 搜索項著色, 會覆蓋基礎顏色, 取交集.
    private void tintSearchMenuItem() {
        int color = ContextCompat.getColor(this, android.R.color.white); // 白色
        mSearchItem.getIcon().setColorFilter(color, PorterDuff.Mode.SRC_IN); // 交集
    }

    // 搜索項初始化
    private void initSearchView() {
        SearchView searchView = (SearchView) MenuItemCompat.getActionView(mSearchItem);
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override public boolean onQueryTextSubmit(String query) {
                MenuItemCompat.collapseActionView(mSearchItem);
                loadWeatherData(query); // 加載查詢數據
                return true;
            }

            @Override public boolean onQueryTextChange(String newText) {
                return false;
            }
        });
    }

3. 功能測試

這一部分, 我會重點講解。

既然使用Dagger2, 那么我們就來配置依賴注入。

三部曲: Module -> Component -> Application

Module, 使用模擬Api類, MockWeatherApiClient

/**
 * 測試App的Module, 提供AppContext, WeatherApiClient的模擬數據.
 * <p>
 * Created by wangchenlong on 16/1/16.
 */
@Module
public class TestAppModule {
    private final Context mContext;

    public TestAppModule(Context context) {
        mContext = context.getApplicationContext();
    }

    @AppScope
    @Provides
    public Context provideAppContext() {
        return mContext;
    }

    @Provides
    public WeatherApiClient provideWeatherApiClient() {
        return new MockWeatherApiClient();
    }
}

Component, 注入MainActivityTest

/**
 * 測試組件, 添加TestAppModule
 * <p>
 * Created by wangchenlong on 16/1/16.
 */
@AppScope
@Component(modules = TestAppModule.class)
public interface TestAppComponent extends AppComponent {
    void inject(MainActivityTest test);
}

Application, 繼承非測試的Application(WeatherApplication), 設置測試組件, 重寫獲取組件的方法(getAppComponent)

/**
 * 測試天氣應用
 * <p>
 * Created by wangchenlong on 16/1/16.
 */
public class TestWeatherApplication extends WeatherApplication {
    private TestAppComponent mTestAppComponent;

    @Override public void onCreate() {
        super.onCreate();
        mTestAppComponent = DaggerTestAppComponent.builder()
                .testAppModule(new TestAppModule(this))
                .build();
    }

    // 組件
    @Override
    public TestAppComponent getAppComponent() {
        return mTestAppComponent;
    }
}

Mock數據類, 使用模擬數據創建Gson類, 延遲發送至監聽接口。

/**
 * 模擬天氣Api客戶端
 */
public class MockWeatherApiClient implements WeatherApiClient {
    @Override public Observable<WeatherData> getWeatherForCity(String cityName) {
        // 獲得模擬數據
        WeatherData weatherData = new Gson().fromJson(TestData.MUNICH_WEATHER_DATA_JSON, WeatherData.class);
        return Observable.just(weatherData).delay(1, TimeUnit.SECONDS); // 延遲時間
    }
}

注冊Application至TestRunner。

/**
 * 更換Application, 設置TestRunner
 */
public class WeatherTestRunner extends AndroidJUnitRunner {
    @Override
    public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException,
            IllegalAccessException, ClassNotFoundException {
        String testApplicationClassName = TestWeatherApplication.class.getCanonicalName();
        return super.newApplication(cl, testApplicationClassName, context);
    }
}

測試主類

/**
 * 測試的Activity
 * <p>
 * Created by wangchenlong on 16/1/16.
 */
@LargeTest
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {

    private static final String CITY_NAME = "Beijing"; // 因為我們使用測試接口, 設置任何都可以.

    @Rule public ActivityTestRule<MainActivity> activityTestRule = new ActivityTestRule<>(MainActivity.class);

    @Inject WeatherApiClient weatherApiClient;

    @Before
    public void setUp() {
        ((TestWeatherApplication) activityTestRule.getActivity().getApplication()).getAppComponent().inject(this);
    }

    @Test
    public void correctWeatherDataDisplayed() {
        WeatherData weatherData = weatherApiClient.getWeatherForCity(CITY_NAME).toBlocking().first();

        onView(withId(R.id.menu_action_search)).perform(click());
        onView(withId(android.support.v7.appcompat.R.id.search_src_text)).perform(replaceText(CITY_NAME));
        onView(withId(android.support.v7.appcompat.R.id.search_src_text)).perform(pressKey(KeyEvent.KEYCODE_ENTER));

        onView(withId(R.id.city_name)).check(matches(withText(weatherData.getCityName())));
        onView(withId(R.id.weather_date)).check(matches(withText(weatherData.getWeatherDate())));
        onView(withId(R.id.weather_state)).check(matches(withText(weatherData.getWeatherState())));
        onView(withId(R.id.weather_description)).check(matches(withText(weatherData.getWeatherDescription())));
        onView(withId(R.id.temperature)).check(matches(withText(weatherData.getTemperatureCelsius())));
        onView(withId(R.id.humidity)).check(matches(withText(weatherData.getHumidity())));
    }
}

ActivityTestRule設置MainActivity.class測試類。

setup設置依賴注入, 注入TestWeatherApplication的組件。

使用WeatherApiClient的數據, 模擬類的功能. 由于數據是預設的, 不論有無網絡, 都可以進行可靠的功能測試。

執行測試, 右鍵點擊MainActivityTest, 使用Run ‘MainActivityTest’

原文轉載自:


標簽:軟件測試技術軟件測試

本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn


為你推薦

  • 推薦視頻
  • 推薦活動
  • 推薦產品
  • 推薦文章
  • 慧都慧問
掃碼咨詢


添加微信 立即咨詢

電話咨詢

客服熱線
023-68661681

TOP
五级黄色片 | 国产精品人妻无码久久久免费看 | 草莓视频午夜在线观影 | 性色AV蜜桃AV人妻无码 | 国产在线播放KKK | 日韩黄色网 | 久操视频网 | 亚洲日韩aⅴ在线视频 | 久久97精品久久久久久久不卡 | 四虎官方影库首页 | 男人午夜视频在线观看 | 伊人网综合在线观看 | 麻豆免费看 | 在线免费视频国产 | 狠狠狠狠狠干 | 果冻传媒九一制片厂 | 午夜在线视频一区二区三区 | 中文字字幕在线中文乱码2019 | 夜夜躁狠狠躁日日躁孕妇 | 亚洲另类欧美在线电影 | 久草手机在线视频 | 日韩欧美高清色码 | 国产欧美日韩一区二区赛车 | 88华人永久免费 | 成人亚洲区无码偷拍 | 最近国语视频免费观看在线播放 | 日本韩国欧美在线 | 国产 日韩 欧美 高清 亚洲 | 91精品导航在线网址免费 | 国产AA久久大片日本无码 | 乱码AV午夜噜噜噜噜 | 丰满岳乱妇一区二区三区 | 欧美一级va在线视频免费播放 | 国产精品日本无码久久一老A | 国产资源在线观看 | 麻豆最新国产剧情AV原创免费 | 黄色成年| 欧美一区二区三区黄色 | 性一交一乱一伦一色一情 | 无码人妻一区二区久久 | 亚洲天堂91| 欧美日本国产VA高清CABAL | 亚洲日本欧美产综合在线 | 久久久A片精品一区二区 | 欧亚乱色熟一区二区三四区 | 三级黄色片在线免费观看 | 天天躁日日躁狠狠躁欧美日韩 | 黄 色 免 费 网站在线观看 | 国产日本精品视频在线观看 | A片高潮抽搐揉捏奶头视频在线看 | 一级国产黄色片 | 精品国产三级AV一区二区三区 | 天堂新版在线资源 | 亚洲欧洲日本国产专区一区 | 18禁裸乳无遮挡免费网站 | 精品 在线 视频 亚洲小说 | 92看看福利1000集合集免费 | 在线看电视网站 | 成人亚洲国产精品久久 | 不卡国产| 国产在线无码不卡影视影院 | 色国产在线视频一区 | 亚洲免费网站 | 69式视频| 人妻妺妺窝人体色WWW聚色窝 | 欧美丰满大乳无码少妇 | 宝贝乘把腿张开让我添动态图 | 婷婷五月俺也去人妻 | 亚洲精品中文字幕乱码三区 | 麻豆吧 | 日韩精品在线视频观看 | 欧美一区二区三区大片 | 狠狠色噜噜狠狠狠888奇米 | 国产午夜精品AV一区二区麻豆 | v天堂在线观看 | 自拍视频在线观看完整版 | 99精品国自产在线偷拍无码软件 | 日本MV在线观看永久免费 | 国产成人精品日本亚洲网址 | 久久午夜一区二区 | 久久最新免费视频 | 3至13呦女毛片| 色美妞 | 久久综合色网 | 欧洲三级视频 | 热99这里只有精品 | 精品日韩免费视频在线观看 | 中国国产高清一级毛片 | 中文字幕人妻熟女人妻 | 国产高潮A片羞羞视频涩涩 国产高潮抽搐在线观看 | 双性少爷挨脔日常H惩罚H | 国产免费无码成人A片在线观看 | 91网站网站网站在线 | 五月天激情视频在线观看 | 免费久久一级欧美特大黄 | 国产午夜精品理论片 | 一级毛片免费在线观看网站 | 欧美视频一区在线 | 成熟妇女A片高潮免费看 | 补课H湿 1V1 PLAY| 可以免费在线看黄的网站 | 斯大林格勒战役免费高清观看 | 人人添人人麦人人爽夜欢视频 | 亚洲第一成网站 | 国产精品xxxav免费视频 | 插插插色欲综合网 | 国产一级αv片免费观看 | 国内免费在线视频 | 欧美成人精品第一区首页 | 波多野结衣精品一区二区三区 | 成人网zhan | 99久久亚洲精品日本无码 | 日产一一到六区麻豆 | 爱唯侦x论坛 | 久久99中文字幕伊人 | 精品免费久久 | 国语自产拍在线观看偷拍在 | 四虎影在线 永久免费 | 性69式视频在线观看免费 | 欧美日韩福利视频一区二区三区 | 国产精品美女自在线观看免费 | 少妇被躁爽到呻吟全过的小说 | 亚洲 欧美 视频 手机在线 | 99久久久国产精品免费蜜臀 | 久久视频在线视频2019 | 亚洲精品第一页中文字幕 | 在线观看亚洲一区二区 | 九九久久香港经典三级精品 | 久久精品麻豆日日躁夜夜躁妓女 | 成人无码区免费A片视频韩国 | 少妇被躁爽到高潮无码久久 | 欧美变态杂交xxx | 国产在线视频自拍 | 97ai蜜桃图片区 | 亚洲精品无码苍井空A片 | 成人网18免费视频 | 欧美操操操 | 日本成人一区 | 长篇肉戏香艳完本小说排行榜 | 色噜噜狠狠狠色综合久 | 99久久精品国语对白 | 97视频资源 | 四虎无码永久在线影库网址一个人 | www日本高清视频 | 欧美国产三级 | 九九精品视频在线观看 | 工口里番ACG全彩无码下拉式 | 亚洲一卡2卡3卡4卡国产网站 | 91久久精品午夜一区二区 | 久久久精品久久久久久久久久久 | 亚洲A片一区日韩精品无码 亚洲H成年动漫在线观看不卡 | 人妻熟妇乱又伦精品视频中文字幕 | 亚洲精品国产乱码AV在线观看 | 91尤物视频在线观看 | 久久精品视频在线看4 | 好想被狂躁A片免费久99 | 无码欧美一区二区三区 | 伊人久久大香线蕉无码麻豆 | 亚洲精品久久AV无码麻小说 | v欧美精品v日本精品 | 欧美极品一区 | 黄页视频网站 | 免费视频网站在线观看黄 | 日本在线免费 | 日韩一区二区免费视频 | 天堂欧美 | 浪妇叫床叫的很浪的小说 | 国产乱码精品一品二品 | 微拍福利88| 国产高清片| 成人国产一区二区精品小说 | 色播视频网站 | 国产精品久久毛片A片软件爽爽 | 四房播播看 | 日韩色情免费高速视频 | 草莓视频app深夜福利 | 性感美女毛片 | 少妇大荫蒂毛多毛大 | 日本一区二区免费看 | 日韩AV国产精品成人无码 | 成午夜精品一区二区三区精品 | 色中色 地址 | 91久久综合精品国产丝袜长腿 | 网址在线观看你懂的 | 少妇被躁爽到高潮无码A片小说 | 免费点影在线观看网址大全 | 亚VA芒果乱码一二三四区别 | 麻豆自制传媒 国产之光黄 麻豆在视频线 | 伊人大蕉综合网站亚洲最大 | 欧美黑人在线 | 亚洲 日本 欧美 中文字幕 | 5278欧美一区二区三区 | 美国毛片一级视频在线aa | 免费又黄又硬又爽大片 | AV国産精品毛片一区二区三区 | 成年女人免费影院播放 | 在线播放周妍希国产精品 | 日本大片A成人无码超级麻豆 | 成 人在线观看视频网站 | 亚洲成熟女人毛毛耸耸多 | 在线观看亚洲AV无码每日更新 | 最近韩国日本免费观看百度 | 黑人狂躁日本妞无码A片 | 久久www免费人成高清 | 色资源二区在线视频 | 国产激情久久久久影院小草 | 99精品全国免费7观看视频 | 中文字幕亚洲第一页 | 蜜桃在线观看无码免费 | 五月婷色 | 2022国产精品不卡a | 成年网站在线观看播放 | 波多野结衣xfplay在线观看 | 免费AA片少妇人AA片直播 | 亚洲 综合 欧美在线 热 | 天天色爱| 最近更新中文字幕大全免费 | 成人亚洲区无码偷拍12P | 日日摸天天摸97狠狠婷婷 | 国产亚洲精品hd网站 | 伴郎粗大的内捧猛烈进出视频观看 | 欧洲亚洲精品A片久久99动漫 | 欧美深夜福利网站在线观看 | bl文H全肉 | 蜜桃99| 久久久99精品久久久久久 | 亚洲一区二区女搞男 | 中文字幕亚洲第一 | 性一交一乱一A片 | 欧美激情91 | 亚洲 欧美 国产 动漫 综合 | 亚洲精品资源在线 | 草久热 | 色噜噜狠狠色综无码久久合欧美 | 亚洲欧美日本综合一区二区三区 | 久久AV亚洲精品一区无码网 | 在线观看日韩精品 | 97人妻熟女成人免费视频 | 国产成人精品午夜免费 | 久久视频精品38在线播放 | 久久热视频精品店99 | 在线欧美一区 | 2019精品国产品在线18年网 | 色豆豆永久免费网站 | 亚洲第一成网站 | 激情六月色| 国内精品乱码卡一卡2卡三卡 | 性一交一乱一交A片久久四色 | 久久久久久久国产免费看 | 精品人妻无码日本一区二区三区 | 欧美AAAAAA级午夜福利视频 | 久久精品AV一区二区无码 | 99久久99久久精品 | 好男人视频社区精品免费 | 免费一级国产大片 | 国产免费网站看v片元遮挡 国产免费区 | 婷婷六月丁香缴 清 | 欧美阿v高清资源在线 | 黑人xxxx性hd极品 | 一级做a爱过程免费观看 | 日本一道人妻无码一区在线 | 色偷偷超碰av男人天堂 | 日韩伦理 | 亚洲精品久久区二区三区蜜桃臀 | 97在线视频免费观看 | 男人的天堂中文字幕熟女人妻 | 亚洲欧美中文日韩v在线 | 被群CAO的合不拢腿H小说 | 欧美日韩在线视频不卡一区二区三区 | 国产人妻一区二区无码 | 成人网导航 | 狠狠色成人综合 | 性色爽爱性色爽爱网站 | 国产丰满人妻一区二区三区 | 亚洲国产精品成人综合久久久 | 放荡女纯肉辣文 | 小污女导航福利入口 | 午夜精品视频在线观看美女 | 日本妈妈黄色片 | 日本女人下面毛茸茸 | 久久久久久久国产精品 | 51国偷自产一区二区三区 | 伊人网综合 | 亚洲欧美视频一区二区 | 欧美亚洲日本一区 | 国产网曝在线观看视频 | 美女性爽视频国产免费 | 男人都懂www深夜免费网站 | 男女毛片免费视频看 | 女人让男人捅30分钟 | 国内自拍网 | 91avcom| 亚洲综合久久久久久888 | 精品精拍国产日韩26u | 动态图污动态 | 久久精品国产99国产精品澳门 | 欧美一区二区三区红桃小说 | 久青草国产免费观看 | 国产免费午夜高清 | 丰满少妇夜夜爽爽高潮水 | 六月婷婷在线 | 国产成人片 | 日韩网红少妇无码视频香港 | 久久免费看少妇高潮A片2012 | 澳门一级毛片手机在线看 | 美国毛片免费看 | 欧美色影院 | 国产69精品久久久久乱码 | 国产 亚洲 中文字幕 在线 | 免费爱爱网址 | 欧美真人性做爰一二区欧美影院 | 国产精品久久无码人妻一区二区 | 再深点灬舒服灬太大了动态图 | 亚洲免费视频在线 | 国内精品A片XXX久久久 | 欧美日韩高清一区 | 欧美色偷偷亚洲天堂bt | 花房姑娘HD版在线观看 | 少妇伦子伦精品无吗 | 亚洲精品欧美精品中文字幕 | 粉嫩小又紧水又多A片 | 中文字幕一区婷婷久久 | 亚洲一级视频在线观看 | 日日摸夜夜欧美一区二区 | 女人下边被添全过程A片小说 | 久久九九久精品国产尤物 | 亚洲精品国产成人无码区A片 | 国产精品免费久久久久影院 | 久久久亚洲精品一区二区三区 | 日本不卡高清免费v日本 | 伦理高清百度影音 | 国产精品玖玖玖在线观看 | 成人AV免费网址在线观看 | 久久精品免费大片国产大片 | 中文字幕乱码高清完整版 | 国产传媒18精品免费1区 | 日本a级片视频 | 交换邻居波多野结衣中文字幕 | 国精品人妻无码一区二区三区牛牛 | av在线天堂网 | 影帝做着做着进去了H | 亚洲精品久久AV无码一区二 | 成年人黄视频在线观看 | 亚洲黄色免费在线观看 | 日本红怡院亚洲红怡院最新 | 免费午夜无码无码18禁无码影院 | 都市人妻古典武侠另类校园 | 国产精品久久久久久久久久一区 | 亚洲人午夜射精精品日韩 | 久久久国产99久久国产一 | 蜜桃AV蜜臀AV色欲AV麻 | 四虎影视永久无码精品 | 中文字幕乱码中文乱码777 | 久久久久久久久久免观看 | 午夜福利1000集看看 | 免费观看高清大片在线播放 | 欧美综合区自拍亚洲综合图 | 五月天色婷婷在线 | 黄页视频免费观看 | 最新露脸国产精品视频 | 亚洲精品美女久久久久99 | 欧美激情亚洲一区中文字幕 | 天堂资源8中文最新版在线 天堂资源8中文最新版 | 97人伦色伦成人免费视频 | 午夜DJ影院在线观看免费完整高清 | 色爱综合区 | 久久精品亚洲热综合一本 | 欧美一级欧美一级在线播放 | 国产精品成人无码A片免费网址 | 4日本私人vps生活大片 | 香港三级韩国三级日本三级 | A片粗大的内捧猛烈进出在线 | 成年人网站在线观看免费 | 扣扣影视在线 | 中文字幕免费在线播放 | 免费国产在线观看老王影院 | 国精品人妻无码一区二区三区三 | 在线观看免费国产 | 特黄做愛又硬又大A片视频 特级 毛片 | 春雨电影大全免费观看在线播放 | 国产99久久久国产精品成人 | 亚洲激情中文 | 五月婷婷六月丁香在线 | 十九岁日本电影免费完整版 | 快播酒色网 | 日本哎哎哎视频免费1000 | 亚洲中文字幕无码专区日本苍井空 | 秋霞网一区| 亚洲 欧美 校园 春色 小说 | 好硬啊进去太深了A片 | 亚洲熟女久久色 | 亚洲色婷婷久久精品AV蜜桃久久 | 无修无遮h韩漫视频网站 | 国产精品久久久 | 日本视频播放免费线上观看 | 久久鬼| 亚洲精品一区国产欧美 | 嗯好湿用力的啊c进来动态图 | 欧美性猛交一区二区三区精品 | 国产成人综合网在线播放 | 丁香啪啪综合成人亚洲 | 欧美四虎 | 激情做a全过程片A | 粗大挺进朋友人妻身体里电影 | 看亚洲人配人配人种jizz | 美女销魂一区二区 | 在线观看视频观看高清午夜 | 学生妹被爆插到高潮无遮挡 | 少妇精品久久久一区二区三区 | 97色伦久久视频在观看 | 少妇仑乱A毛片 | 粉嫩虎白扒开小泬 | 婷婷综合 在线 | 日本三级韩国三级韩级在线观看 | 秋霞看片亚洲先锋一区 | 一级免费黄色毛片 | 天天操天天玩 | 亚洲AV无码影院在线播放 | 久久久久久毛片免费观看 | 亚洲国产成人精品动漫 | 精品久久影院 | 97亚洲狠狠色综合蜜桃 | 五月丁香激色婷五月天 | 欧美孕妇乱大交xxxx | 给我一个可以看片的免费 | 黄色一级片免费在线观看 | 日本高清中文字二区不卡 | 日韩黄色网 | 免费无码国产欧美久久18 | 欧美videos人牛交 | 国产精品人妻久久无码不卡 | 天天色天天干天天 | 久久久久久久一线毛片 | 国产精品综合AV一区二区国产馆 | 按摩高潮A片一区二区三区 澳门永久av免费网站 | 在线看片v免费观看视频777 | 黄色一级片在线观看 | 色翁荡熄又大又硬又粗又视频软件 | 在线免费国产 | 韩国美女激情视频一区二区 | 欲妇荡岳丰满少妇A片24小时 | 久久久久久不卡 | 免费日韩中文字幕高清电影 | 国产一性一交一伦一A片 | 香蕉在线综合2019版 | 在线永久免费观看黄网站 | 久久九九有精品国产56 | 九一国产在线观看 | 我要爱久久影视 | 免费日产乱码卡一卡2卡三卡四 | 三级毛片免费观看 | 中文乱码在线中文字幕中文乱码 | 欧美性色黄大片四虎影视 | 五月天婷婷缴情五月免费观看 | 日本高清免费不卡在线播放 | 久久综合久久鬼色 | 97超视频在线观看 | 天天干夜夜拍 | 牛牛精品专区在线 | 五月综合色婷婷影院在线观看 | 丰满少妇大力进入A片中文 丰满少妇内射一区 | 情色婷婷 | 中文乱码在线中文字幕中文乱码 | 92kyy福利合集| 久久免费播放视频 | 韩国美女毛茸茸 | 四虎影视成人永久免费观看视频 | 九一毛片 | 富二代精品短视频在线 | 亚洲成在人色婷婷 | 亚洲乱码日产精品BD在线下载 | 韩日在线 | 国产亚洲精品久久久久久白晶晶 | 国产乱码一卡二卡3卡4卡网站 | 特级黄国产片一级视频播放 | 午夜成年奭片免费观看 | 性欧美极品 | 欧美日韩一二区旡码高清在线 | 国产人妻高清国产拍精品 | 国产乱码日产精品BD | 亚洲欧美日本国产高清 | 国产酒店自拍 | 中文字幕乱码在线播放 | 波多野结衣在线网址 | 国产肥白大熟妇BBBB | 久久久久久久尹人综合网亚洲 | 夜色贵族亚洲贴图区 | 午夜时刻免费入口 | 大黄免费网站 | 亚洲伦理久久 | 四虎影视完整版免费观看 | 欧美午夜精品一区区电影 | 欧美精品一区二区在线观看 | 久久无码亚洲成A人片 | 99久久精品国产一区二区 | 免费无码不卡 | 毛片毛片毛片 | 秋霞久久网| 老师我好爽再深一点好舒 | 亚洲色欲色欲WWW在线看小说 | 国产亚洲精品久久久闺蜜 | 桃子视频直播高清在线 | 国产色情麻豆一区二区乐视 | 国精产品一二二区传媒公司 | 国产女人毛片好多水 | 亚洲美女毛茸茸 | 中文字幕亚洲自拍 | 少妇高潮潮喷到猛进猛出小说 | 黄色免费在线网址 | 午夜精品久久久久久久 | 国产一区自拍视频 | 91网址在线 | 国产精品久久人妻拍拍水牛影视 | 国产成人综合亚洲动漫在线 | 色情A片成人网站免费看 | 国产午夜精品片一区二区三区 | JLZZJLZZ亚洲乱熟在线播放 | 国产美女人人人妻 | 嗯啊 流水噗呲h啪啪皇上双性 | 在线视频日韩精品 | a级片大全| 久久久99品牌的特色产品 | 国产亚洲精品成人AV久久 | 日韩中文字幕精品久久 | 午夜丁香婷婷 | 就要爱综合 | 日本妇人成熟免费中文字幕 | 国产电影在免费播放在线观看 | 黑人粗长大战亚洲女 | 亚洲精品国产第一区第二区 | 美日韩精品 | 在线天堂中文字幕 | 久久精品麻豆日日躁夜夜躁 | 日本人jizz | 又爽又色少妇视频 | 青草草在线视频 | 精品国产免费久久久久久 | 亚洲人成网亚洲欧洲无码 | 九九在线观看精品视频6 | 国外精品视频在线观看免费 | 五月色综合网天天综合网 | 成人综合亚洲欧美一区h | 免费国产一级特黄aa大 | 成 人 黄 色 免费 网站无毒 | 国内精品乱码卡一卡2卡三卡 | 日本一区二区三区四区在线观看 | h肉肉导航 | 色窝窝免费播放视频在线 | 欧美性久久 | 国产精品一区二区三区四区五区 | 性一交一乱一伦一A片 | 亚洲の无码国产の无码步美 | 一个人看的www高清观看 | 91人人爱| 亚洲国产高清精品线久久 | 色片段高清在线 | 亚洲丰满熟妇XXXX性A片 | 精品国产人妻一区二区三区久久 | 中文字幕人妻丰满熟女 | 3d肉蒲团观看地址 | 日本三级韩国三级在线观看a级 | 免费的三级毛片 | 日本三级韩国三级欧美三级 | 国偷盗摄自产福利一区在线 | 2o18国产大陆天天弄 | 风平浪静 | 伦理片在线线249 | 美国一级毛片免费 | 性一交一乱一交A片久久 | 被十几个男人扒开腿猛戳电影 | 91小视频在线观看 | 国产一级 黄 片 | 性一交一伦一乱一A片 | 久久综合九色综合精品 | 欧美一区二区在线观看 | 国产精品第一综合首页 | 成人窝窝午夜看片 | 麻豆午夜视频 | 91青青青青青爽在线 | 亚洲国产成人精品久久 | 依依成人综合 | 中文字幕一区二区三区精华液 | 在线成人免费观看国产精品 | 特级太黄A片免费播放成人片视频 | 亚洲一区二区三区成人 | 国产亚洲精品精品精品 | 又大又硬又粗做大爽A片 | 一级片网站在线观看 | 亚洲手机中文字幕 | 国产在线观看www | 亚洲一级毛片视频 | 日韩无码在钱中文字幕在钱视频 | 人妻系列_第 9 部分 | av岛国小电影在线观看 | 性做爰添lBB视频免费下载 | 国产天美文化传媒 | 男Ji大巴进入女人的视频小说 | 美女脱裤衩扒开尿口给男子摸 | 国产电影一区二区三区爱妃记 | 免费无码又爽又刺激A片小说在线 | 国产精品色情国产电影 | 性xxxx| 韩国中文全部三级伦在线观看中文 | 天天精品在线 | 在线播放69热精品视频 | 四虎影视2024在线播放a | 久久国产精品久久精 | 婷婷综合 | 苍井空无码播放电车 | 伊人大相蕉在线看青青 | 色综合天天干 | 九九免费视频 | 国产精品久久久 | 色又黄又爽18禁免费视频 | 97色网站| 日韩欧美一区二区中文字幕 | 999国产精华是正规产品吗 | 欧美国产激情二区三区-免费A片 | 欧美色欧美亚洲高清在线观看 | 东京热 影音 | 精品亚洲卡一卡2卡三卡乱码 | 午夜精品成人毛片 | 福利视频在线4 | 国产又粗又黄又爽的A片动漫软件 | 超清中文乱码字幕在线观看 | 粗大的内捧猛烈进出在线视频 | 九九99| 日韩一区二区三区四区区区 | 亚洲一区二区三区乱码在线欧洲 | 欧美性爽交A片大全 | 好男人资源影院 | 久久无码AV亚洲精品色午夜麻豆 | 草草视频在线播放 | 超91精品手机国产在线 | 欧美色交 | 美国一级毛片免费看成人 | 幸福人生护士 | 免费在线a | 狠狠躁夜夜躁人人爽天天段 | 杨门女将肉艳史k8播放 | 免费jizz在在线播放国产 | 特级毛片免费观看视频 | 狠狠亚洲丁香综合久久 | 高清对白精彩国产国语 | 亚洲精品无码高潮喷水A片软件 | 日韩国精品一区二区A片 | 99热久久这里只有精品 | 日本三级香港三级久久99 | 日本熟妇乱妇熟色A片在线观看 | 韩国日本三级三级人 | 天天综合天天干 | 色125综合 | 无人区卡一卡二入口 | 成人无码A片视频播放 | 日本中文字幕巨大的乳专区 | 国产精品久久久久久久网站 | 成熟YIN荡美妞A片视频麻豆 | 亚洲国产中文在线二区三区免 | 国产无遮挡又黄又爽又色 | 曰批全过程免费视频在线观看草莓 | 深夜你懂的在线网址入口 | 欧美乱码卡一卡二卡四卡免费 | 99re66热这里只有精品免费观看 | 777奇米影视笫四色88me久久综合 | 伦理片 a在线线版韩国 | 亚洲区中文字幕 | 国产亚洲AV综合一区二区A片 | 99久久精品久久久 | 国产精品久久永久免费 | 亚洲成a人v欧美综合天堂下载 | 日韩精品专区 | 大学生做爰全过程免费的视频 | 国产精品天天狠天天看 | 韩国羞羞秘密教学子开车漫书 | 色久久综合视频本道88 | 国模沟沟一区二区三区 | 日本一区二区三区免费播放视频站 | 日本成人高清视频 | 亚洲国产欧美在线 | 国产精品久久久精品a级小说 | 国产三级精品三级在专区中文 | www三级免费 | 成人欧美日韩视频一区 | 成人精品一区二区三区校园激情 | 亚 洲 视 频 高 清 无 码 | 国产目拍亚洲精品一区二区 | 欧美日韩国产一区二区三区 | 丰满人妻妇伦又伦精品APP国产 | 99热在线免费 | 欧美黑人猛性暴交 | 精品国产人妻精品 | 91精品国产亚一区二区三区 | 国产精品变态重口在线 | 一区二区三区四区免费视频 | 又湿又深又爽的A片视频 | 人人干97| 99爱视频精品免视看 | 巨大乳女人做爰视频在线 | 亚洲欧美日韩国产手机在线 | 野外被强日本在线观看 | 色中色入口 | 亚洲精品又粗又大又爽A片 亚洲精品一区无码A片 | 国内精品久久久久久网站 | 午夜激情视频在线播放 | 艳妇臀荡乳欲伦交换在线播放 | 亚洲三级免费 | 日本亚欧热亚洲乱色视频 | 国产伦精品一区二区三区免.费 | 免费被黄网站在观看 | 色欲国产麻豆一精品一AV一免费 | 久久精品免费观看视频 | 视频色版 | 日本视频一区二区三区 | www.色网站 | 黑帮少爷爱上我第一季在线观看 | 欧美xxxx极品流血 | 黄色一区二区三区 | 少妇高潮潮喷到猛进猛出小说 | 乖宝真紧H太好C了H 灌饱娇嫩H将军公主最新章节 | 最大的高清色情在线网 | 欧区一欧区二欧区三免费 | 午夜在线观看视频免费成人 | 久久久久久久久亚洲 | 国产成人毛片亚洲精品不卡 | 亚洲欧洲日本无在线码播放 | 色爱综合区 | 内射调教小说高H1V1姐弟 | 九九色综合 | 麻豆AV蜜桃AV久久 | 夜夜操com | A片扒开双腿猛进入免费观 A片好大好紧好爽视频免费 | 国产精品色拉拉免费看 | 欧美另类xxxxhd高清 | 日韩高清在线播放不卡 | 国产精品扒开腿做爽爽爽日本无码 | 国内精品亚洲 | 国产成人精品视频午夜 | av女同| 黄色一级视频在线播放 | 国产女人水真多18毛片18精品 | 天天av天天翘天天综合网 | 91福利视频导航 | 真人一级毛片国产 | 香蕉AV久久一区二区三区 | 四虎永久在线观看免费网站网址 | 日韩精品射精管理在线观看 | 日本中文字幕高清 | 亚洲国产精品成熟老女人 | 樱花草社区WWW视频在线观看高清 | 亚洲国产精品久久精品成人 | 国产成人在线播放 | 玩弄放荡人妇系列短篇下载 | 狠狠撸的网站首页 | 丰满熟妇啪啪区日韩久久 | J8又粗又硬又大又爽又长A片 | 国产精选 第1页-要看tv | 日日噜噜夜夜狠狠tv视频免费 | 成人动漫久久 | 激情内射亚洲一区二区三区爱妻 | 水蜜桃视频在线播放下载 | 久久老司机波多野结衣 | 深夜福利欧美 | 国内一级黄色片 | 欧美一级精品高清在线观看 | 电影伦理片 | 在线观看的免费视频 | 夜夜操天天爽 | 最新免费观看的电影 | 国产午夜亚洲精品国产 | GAY空少被体育生开菊网站 | 最近最新中文字幕MV在线1 | 久久精品日韩一区国产二区 | 国产午夜精品视频在线播放 | 麻豆XXXXXX在线观看 | 深夜福利网站在线 | 野花日本大全免费观看6高清版 | 日本老妇和子乱视频 | 请以你的名字呼唤我 | 北条麻妃 中文字幕 | 亚洲精品无码高潮喷水A片软件 | 久久久久久一级毛片免费无遮挡 | 亚洲激情视频 | 四虎影午夜成年免费精品 | 先锋资源久久 | 久久精品AV麻豆 | 听党话跟党走始终是共青团坚守的 | 97在线线免费观看视频在线观看 | 精品国产露脸久久AV麻豆 | 樱花草日本在线WWW官网 | 色情A片成人网站免费看视频 | 日日摸夜夜添夜夜添影院视频 | 色综合天天 | 影音先锋中文AV资源网 | 无限看视频在线看 | 欧美激情二区三区 | 99国内自产精华 | 麻豆视传媒免费版 | 伊人综合在线 影院 | 亚洲一区二区三区高清网 |