免费男女视频_国产系列 视频二区_羞羞视频免费入口网站_久国久产久精永久网页_国产免费观看av_一区二区三区日韩在线观看

Android Studio + Robolectric + AndroidAnnotations 根本框架

Android Studio + Robolectric + AndroidAnnotations 基本框架

記錄一下,使用的 Android Studio 版本是 0.8.2 (Beta)

?

在 Project 目錄下的 build.gralde 文件中的 dependencies 添加二行

classpath 'org.robolectric:robolectric-gradle-plugin:0.+'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.+'

?引入這二個插件 robolectric-gradle-plugin,android-apt

?

之后在 Module 目錄下的 build.gralde 文件

apply plugin: 'com.android.application'
apply plugin: 'robolectric'
apply plugin: 'android-apt'

android {
    compileSdkVersion 19
    buildToolsVersion "19.1.0"

    defaultConfig {
        applicationId "cn.platoon.demo"
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'


    apt "org.androidannotations:androidannotations:3.0.+"
    compile "org.androidannotations:androidannotations-api:3.0.+"


    androidTestCompile 'junit:junit:4.+'
    androidTestCompile ('org.robolectric:robolectric:2.+')
    androidTestCompile 'com.squareup:fest-android:1.+'
}

apt {
    arguments {
        androidManifestFile variant.processResources.manifestFile
        resourcePackageName 'cn.platoon.demo'
    }
}

?配置中的包名改為自己的包名。

?

現(xiàn)在開始寫 MainActivity 直接上代碼

@EActivity(R.layout.activity_main)
@OptionsMenu(R.menu.main)
public class MainActivity extends ActionBarActivity {
    @ViewById(R.id.text)
    TextView text;

    @OptionsItem(R.id.action_settings)
    public void action_settings() {
        text.setText("action_settings");
    }

    @Click(R.id.button)
    public void button() {
        text.setText("button");
    }
}

?Layout 文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" >

    <TextView
        android:id="@+id/text"
        android:text="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/button"
        android:text="測試"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


</LinearLayout>

?Menu 文件

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">
    <item android:id="@+id/action_settings"
        android:title="@string/action_settings"
        android:orderInCategory="100"
        app:showAsAction="never" />
</menu>

?之后就是測試文件,新版本的會自己建一個 androidTest 目錄,測試文件就放在這下面

@RunWith(RobolectricTestRunner.class)
@Config(emulateSdk = 18)
public class MainActivityTest {
    Activity activity;

    @Before
    public void before() {
        activity = Robolectric
                .buildActivity(MainActivity_.class)
                .create().get();
    }


    private final MenuItem actionSettingsMenuItem = new TestMenuItem() {
        @Override
        public int getItemId() {
            return R.id.action_settings;
        }
    };

    @Test
    public void testActionSettings() throws Exception {
        TextView text = (TextView) activity.findViewById(R.id.text);

        activity.onOptionsItemSelected(actionSettingsMenuItem);
        assertThat(text.getText().toString(), equalTo("action_settings"));
    }

    @Test
    public void testButtonClick() throws Exception {
        Button button = (Button) activity.findViewById(R.id.button);
        TextView text = (TextView) activity.findViewById(R.id.text);

        button.performClick();
        assertThat(text.getText().toString(), equalTo("button"));
    }
}

?

現(xiàn)在文件都全了,可以在 Gralde task 里面找到 test 這個 task,直接運(yùn)行就可以了。

完成后看不到什么提示,要到Module目錄文件下的 build\test-report\index.html 這個文件,打開就是測試報告。

?

要注意的是,現(xiàn)在下的 robolectric 是 2.3 的版本,只能測試到 sdk 18,所以要在測試類上加 @Config(emulateSdk = 18)。

?

?

我也是剛剛開始研究 android,希望和大家分享一下。

主站蜘蛛池模板: 麻豆视频在线观看免费网站 | 草人人| 天天透天天狠天天爱综合97 | 天天看天天摸天天操 | 日本在线播放一区二区三区 | 欧美激情精品久久久久久黑人 | 国产一区国产二区在线观看 | 久久手机在线视频 | 欧美国产日韩在线 | 一边吃奶一边插下面 | 日韩黄在线观看 | 久久国产乱子伦精品 | 久产久精品 | 国产在线1区 | 激情综合在线观看 | 欧美激情在线播放 | 黄色av电影在线 | 一区二区三区黄色 | 久久久久九九九女人毛片 | 久久国产91 | 国产影院在线观看 | 永久av在线免费观看 | 欧美成人精品一区二区 | www.69色 | 爱操影视| av影院在线播放 | 一级外国毛片 | 亚洲成人福利在线观看 | 黄色高清免费 | 成人aaaaa片毛片按摩 | av在线不卡免费 | 国产精品三级a三级三级午夜 | 特级黄一级播放 | 欧美精品一区自拍a毛片在线视频 | 国产精品久久久毛片 | 一区二区久久精品66国产精品 | 高清国产免费 | 欧美性色黄大片www 成人免费网站在线观看 | 亚洲小视频在线 | 黄色免费小视频网站 | www成人在线观看 |