Intellij Idea に基づいた Android Studio をダウンロードしました。
どのようにテストを作成しますか?
テストモジュールを作成するオプションがあることに気付きましたが、これは何もしないようです.srcで新しいプロジェクトを作成するだけです
また、既存のクラスで単体テストを作成できるホットキー CTRL+AlT+T を押してみましたが、現在のプロジェクトに配置したいようです。もちろん、これはTDDでは役に立ちません
誰もここで経験がありますか?
Intellij Idea に基づいた Android Studio をダウンロードしました。
どのようにテストを作成しますか?
テストモジュールを作成するオプションがあることに気付きましたが、これは何もしないようです.srcで新しいプロジェクトを作成するだけです
また、既存のクラスで単体テストを作成できるホットキー CTRL+AlT+T を押してみましたが、現在のプロジェクトに配置したいようです。もちろん、これはTDDでは役に立ちません
誰もここで経験がありますか?
この回答は、Android のテストを始めたばかりの人向けです。テストがどのように機能するかを理解するのに役立つ 2 つの簡単な例を示します。次の 10 分間の説明に従っていけば、自分のアプリにテストを追加するための準備がすべて整います。その簡単さに驚くと思います。私は確かにそうでした。
実行するテストには 2 つの異なるタイプがあります。
Context
はその例です。)新しいプロジェクトを作成すると、次のデフォルト フォルダーが表示されます。
すべてがすでにそこにあり、テストを作成するのを待っています。それはすべてすでに設定されています!
ExampleUnitTest
上の画像に表示されているファイルを開きます。次のようになります。
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
}
緑色の二重矢印を押してすべてのテストを実行するか、緑色の単一矢印を押して 1 つのみを実行します。(この場合、テストは 1 つしかないため、両方とも同じことを行います。)
合格するはずです(この回答を読ん2 + 2
でいる限り)。4
おめでとうございます。最初のテストが完了しました。
独自のテストを作成する
独自のテストを書きましょう。最初に、このクラスをメイン アプリ プロジェクトに追加して、テストするものを用意します。
public class MyClass {
public int add(int a, int b) {
return a + b;
}
}
ここaddition_isCorrect()
で、テスト クラスのメソッドを次のコードのように変更します (または別の名前の別のメソッドを追加するだけです)。
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
MyClass myClass = new MyClass();
int result = myClass.add(2, 2);
int expected = 4;
assertEquals(expected, result);
}
}
もう一度実行すると、パスするはずです。おめでとうございます。これで、独自の最初のテストが作成されました。(まあ、技術的には私のものだと思いますが、まあ、十分に近いです。私のものはあなたのものです。)
ファイルを開きExampleInstrumentedTest
ます。次のようになります。
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("com.example.myapp", appContext.getPackageName());
}
}
これらの緑色のボタンのいずれかをもう一度押します。
実際のデバイスが接続されているか、エミュレータがセットアップされている限り、起動してアプリを実行する必要があります。おめでとうございます。最初のインストルメント化されたテストが実行されました。
独自のテストを作成する
インストルメント化されたテストでは、 Espressoを使用してテストを実行します。アプリをテストできるのは、小さなロボット ユーザーのようなものです。ボタンを押したり、TextView のプロパティを読み取ったりするように指示できます。
テストのやり方は手書きでも構いませんが、始めたばかりなので自動記録機能を使ってみましょう。とてもシンプルです。
最初に UI にボタンを追加して、操作するものを用意します。これは私がしました:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.myapp.MainActivity">
<Button
android:id="@+id/myButton"
android:text="Click me"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</android.support.constraint.ConstraintLayout>
次に、メニューで[実行] > [エスプレッソ テストの記録] を押します。
開始したら、エミュレーターのボタンをクリックし、[記録] ダイアログで [OK] を選択して終了します。次のテスト コードを自動生成する必要があります。
@LargeTest
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);
@Test
public void mainActivityTest() {
ViewInteraction appCompatButton = onView(
allOf(withId(R.id.myButton), withText("Click me"), isDisplayed()));
appCompatButton.perform(click());
}
}
すごい!これで、最初のインストゥルメンテッド テストが作成されました。それはとても簡単でした。実際のテストを行うには、おそらくアサーションを追加する必要がありますが、それはレコーダーでも非常に簡単に実行できます。このビデオを見て、もう少し深く掘り下げてください。
最初にビデオを見てから、ドキュメントを読みます。それはすべてかなり役に立ちます。最後のリンクは、何をテストするかを選択する際に考慮すべきいくつかの重要事項をカバーする一連の記事へのリンクです。
編集: 0.1.8 以降、これは IDE でサポートされるようになりました。以下の手順を使用する代わりに、そこにある手順に従ってください。
Android Gradle プラグイン ユーザー ガイドに従って、新しく作成したプロジェクトで次の手順を実行することにより、コマンド ラインでテストを実行することができました (デフォルトの 'com.example.myapplication' パッケージを使用しました)。
これでテストが実行され、テスト結果が MyApplicationProject/MyApplication/build/reports/instrumentTests/connected に配置されました。Android アプリのテストは初めてですが、問題なく動作しているようです。
IDE 内から、同じテスト クラスを試して実行することができます。あなたがする必要があります
ただし、これは失敗します (テストの実行時に使用されるクラスパスにテスト出力ディレクトリがありません)。ただし、Android 固有のテスト ランナーが必要であることを理解しているため、これが機能するかどうかはわかりません。
gradle.buildファイルを使用することをお勧めします。
テスト用にsrc/androidTest/javaディレクトリを追加します ( Chrisが説明し始めるように)
gradle.buildファイルを開き、そこで指定します。
android {
compileSdkVersion rootProject.compileSdkVersion
buildToolsVersion rootProject.buildToolsVersion
sourceSets {
androidTest {
java.srcDirs = ['androidTest/java']
}
}
}
「プロジェクトをGradleファイルと同期」(上部パネル)を押します。「java」フォルダ (「androidTest」内) が緑色になっているはずです。
これで、テスト ファイルを作成して実行できるようになりました。
Rex St John によるこの投稿は、android studio での単体テストに非常に役立つと思います。
(ソース: rexstjohn.com )
Android Studio v.2.3.3
テストするコード コンテキストを強調表示し、ホットキーを使用します: CTRL
+ SHIFT
+T
ダイアログ インターフェイスを使用してセットアップを完了します。
テスト フレームワークは、最良の結果を得るためにプロジェクト パッケージのレイアウトを反映することになっていますが、正しいディレクトリとビルド設定があれば、手動でカスタム テストを作成できます。
Android Studio は進化を続けているため、上記の対応は最終的には適用できなくなります。現在のバージョンの Android Studio 1.2.1.1 については、テストに関する優れたチュートリアルが次の場所にあります。
http://evgenii.com/blog/testing-activity-in-android-studio-tutorial-part-1/
主な変更点の 1 つは、Android Studio でテスト アプリケーションがアプリケーション プロジェクトに統合されたことです。
これが特定の問題に役立つかどうかはわかりませんが、Gradle プロジェクトでテストを作成するためのガイドを見つけました。 Android Gradle ユーザーガイド
Android Studio は一種の移動ターゲットであり、最初はデベロッパー プレビューであり、現在はベータ版です。プロジェクト内の Test クラスのパスは変更されていますが、使用している AS のバージョンに関係なく、パスは .iml ファイルで宣言されています。現在、バージョン 0.8.3 では、内部の iml ファイル内に次の内容が含まれています。
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/groovy" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
.iml ファイルは、テスト クラスを配置する場所を示しています。
Android Studio 1.1 の時点で、単体テストの作成が公式 (実験的) にサポートされています (Roboelectric も同様に動作します)。
ソース: https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support