Android「Hello World」を表示するプロジェクトがあります。これはAndroid Studio。の[Blank Activity]テンプレートから作成されました。
次に、アプリケーションパッケージ(アクティビティがある同じパッケージ)に新しいJavaクラスを追加/作成します。これをShapeと呼び、単純なコンストラクタを追加します
public class Shape {
public Shape(int i){
if (i==0){
throw new IllegalArgumentException("Cant have 0");
}
}
}
すごい。これでAndroidにまったく触れないクラスができたので、単体テストを行います。次に何をすればよいですか?
これは私の質問が停止する場所です。以下で私が試したことを説明します。
テストを書く
package com.eghdk.getjunit4towork;
import org.junit.Test;
import static org.junit.Assert.*;
public class ShapeTest {
@Test(expected = IllegalArgumentException.class)
public void testShapeWithInvalidArg() {
new Shape(0);
}
}
この時点では、テストの実行方法がよくわかりませんが、これを実行してみてください。
実行時にこれらのエラーが発生します
エラー:(3、17)Gradle:エラー:パッケージorg.junitは存在しません
エラー:(5、24)Gradle:エラー:パッケージorg.junitは存在しません
エラー:(8、6)Gradle:エラー:シンボルクラステストが見つかりません
Android Studio 1.1であるため、(実験的) 単体テストのサポート があります。そのページからの引用符:
Androidモジュールのbuild.gradleファイルでテストの依存関係を指定する必要があります。例:
dependencies { testCompile 'junit:junit:4.12' testCompile "org.mockito:mockito-core:1.9.5" }
ASで単体テストのサポートを使用するには、次の手順を実行する必要があります。
Build.gradleを更新してAndroid gradleプラグインバージョン1.1.0-rc1以降(build.gradleファイルまたはファイル>プロジェクト構造のUIで手動で)
App/build.gradleに必要なテスト依存関係を追加します(上記を参照)。
[設定]> [Gradle]> [実験的]で単体テスト機能を有効にします。
プロジェクトを同期します。
「ビルドバリアント」ツールウィンドウ(左側)を開き、テスト成果物を「ユニットテスト」に変更します。
テストソースコードのディレクトリ、つまりsrc/test/Javaを作成します。これは、コマンドラインから、またはプロジェクトツールウィンドウのプロジェクトビューを使用して実行できます。この時点で、新しいディレクトリが緑色で強調表示されます。注:テストソースディレクトリの名前は、慣習に基づいてgradleプラグインによって決定されます。
- テストを作成します。これを行うには、クラスを開き、その名前を右クリックして[移動]> [テスト]を選択します。いくつかのテストケースを追加します。
- 新しいテストクラスまたはメソッドを右クリックして、[実行...]を選択します。
- (オプション)Gradleを直接使用して、コンパイル時間を短縮できます。これを行うには、[実行]メニューに移動し、[構成の編集]を選択します。そこで、デフォルトのJUnitテンプレートを見つけ、「Make」起動前ステップを削除し、代わりに「Gradle対応make」ステップを追加します(タスク名は空のままにします)。
androidTest
とプレーンtest
の2つのテストタイプがあることを知っておくことが重要です。
androidTest
は、主に、インストルメンテーションテストなど、エミュレータまたはデバイスで実行するテスト用です。コマンドラインから、./gradlew connectedCheck
を使用してこれらを実行します。test
は、作成した単体テストなど、デバイスで実行したくないテスト用です。これらのテストを実行するには、./gradlew test
を実行します。引用で述べたように、テスト成果物を変更することにより、Android StudioでandroidTest
とtest
を切り替えます。
当然、デバイスまたはエミュレーターでテストを実行しないことをお勧めします。テストプロセスを高速化するためですa lot。新しい実験的な単体テストのサポートにより、デバイスを使用せずにスタブ化されたAndroid APIにアクセスできます。これにより、androidTest
からtest
にさらにテストを移動できます。
Android studio 1.2以上の場合、この回答はGoogleでの最初のランキングの1つであり、これはAndroid Studioでユニットテストを設定する方法に関する優れた非常に簡単なチュートリアルです。これはリンクです: https://io2015codelabs.appspot.com/codelabs/Android-studio-testing#1
テストを実行しようとして2時間を無駄にした後、上記のリンクを使用して最終的にそれを行いました。
設定に移動し、ツールを構築してから段階的に実行し、実験的です。実験的なチェック解除で、すべてのテスト成果物を有効にします。それはゲームオーバーです