2016-03-27 2 views
1

私が./gradlewタスクを実行したとき、私はmockableAndroidJarと呼ばれるビルドタスクに気付きました。説明には次のような記述があります。アンドロイド - gradleタスクmockableAndroidJarと呼ばれる実際にunitTestsでそれを使用する方法

ユニットテストに適したandroid.jarのバージョンを作成します。

コードでこのjar mockをどのように使用することができますか?開発マシン上でローカルのJVM上で実行

ユニットテスト:私は次のことを見たandroid tools pageから

。当社のgradleプラグインは、src/test/javaにあるソースコードをコンパイルし、通常のGradleテスト機構を使用して実行します。実行時に、すべての最終修飾子が削除されたandroid.jarの修正バージョンに対してテストが実行されます。これにより、Mockitoのような人気の模擬ライブラリを使用できます。

しかし、私のテストでは、この新しいandroid.jarファイルを現在のクラスのファイナルに置き換えてテストすることができますか?代わりにこのjarを使うようにテストを指す方法は?私はthis questionを見ましたが、テストでこれを使用する方法を私には見せていないので、理論しか与えません。

./gradlew mockableAndroidJar 

、出力は次のようました:

$./gradlew mockableAndroidJar 
Picked up JAVA_TOOL_OPTIONS: -Xmx512m -Xms64m 
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=768m; support was removed in 8.0 
Incremental java compilation is an incubating feature. 
:app:mockableAndroidJar UP-TO-DATE 

BUILD SUCCESSFUL 

Total time: 1.226 secs 

は、だから、私は、ディレクトリ構造の何らかの変化があるだろうと思ったが、私はいずれかを参照していけない、私は実際にはシェルから次のコマンドを実行しました。 jarファイルが自動的にスワップされますか?

答えて

2

私はAPIレベル23を対象とする私のプロジェクトでそのターゲットを実行すると、それはこのファイルを生成します。

./build/generated/mockable-android-23.jar 

このjarファイルはすべて最終除き、APIレベル23のためのすべてのスタブ、パブリッククラス定義が含まれています修飾子は削除されているので、それらを嘲笑することができます。コンパイルとテストを実行するとき、あなたはコマンドライン上でユニットテストを実行するときあざけるためにこれらのクラスにアクセスできるように

このjarファイルは、自動的にテストのクラスパスに追加されます。

./gradlew test 

あなたはしますあなた自身のテストを定義する必要があります。通常はsrc/test/mainに配置し、JUnitフレームワークを使用して実行します。

関連する問題