2012-01-12 6 views
11

&は、Android SDKとADTとともにEclipse用のM2E Mavenプラグインを正しくインストールしました。Android Mavenディレクトリ構造

私はMavenの内からのAndroidプロジェクトを作成したい、と私はアンドロイドのMavenプラグインをインストールして、プロジェクトを初期化するための既存のAndroid-Maven原型を使用して指示を与えthis記事を見つけました。

私は "T"への指示に従い、プロジェクトを美しく仕上げました。

唯一の問題は、私はに慣れて、ある以下の一般的なMavenのディレクトリ構造(と本当に好き!):

src/ 
    main/ 
     resources/ 
     java/ 
    test/ 
     resources/ 
     java/ 

しかし、この原型は、src/test/*ディレクトリが含まれていないようですsrc/main/*ツリー。 「サブツリー」のテストはどのようにして入手できますか?

は、私は二つの選択肢があると思い:

  • は、それを含むさまざまなAndroidの-Maven原型を探します。または
  • は手動で私も率直に言って、私はが第二をしようとするを怖い、最初のオプションを探し始める場所を知っている、としませんtest/resourcestest/javaソースは自分自身

をフォルダに追加します!私は、アーキタイプのディレクトリ構造を変更すると実際にビルドを台無しにする可能性があると聞いています。

SOは何を提案していますか?私がここで行方不明になっていることは明らかですか?前もって感謝します!

+0

ちょうどメモ。プレーンなMaven Javaプロジェクトとして構築できるライブラリプロジェクトを書くことで、より多くの生産性を得ることができます。これに適切な機能を置くと、より迅速に構築してテストすることができます。 – Steven

答えて

8

チェックアウト彼らの入門ページhereからノートセクション:

注:

  1. あなたは、AndroidのMavenで実行させたいのsrc /テスト/ Javaでのテストを入れないでくださいプラグイン。テストをそこに置くと、MavenはJVMの通常のJUnitテストとしてそれらを実行します。クラスパス上でアクセスできるJARファイルはandroid.jarです。 android.jarには例外をスローする空のメソッドしか含まれていないため、java.lang.RuntimeException:Stub!という形式の例外が発生します。代わりに、テストはsrc/main/javaに移動する必要があります。コンパイル時にMavenでテストとして実行されることはありませんが、APKに含まれ、デプロイされ、デバイス上で実行されます(アンドロイド.jarにはメソッドの実装スタブの代わりに)。
  2. Android APIを(直接的または推移的に)呼び出さないJUnitテストがある場合は、それらをsrc/test/javaに配置すると、JUnitはデバイス上で実行されている場合よりもローカルで迅速に実行されます。
  3. Android Mavenの目標がtest-jar-no-forkではなくjar-no-forkに設定されていることを確認してください。テストだけを含むプロジェクトでもこれを実行します。

UPDATE:限り、あなたのJUnitのテストにはない純粋にPOJOテストされているように、第二の点で述べたように
最も適した「テスト」サブツリーは、IMO、SRC /テスト/ javaのですすべてのAndroid APIコールが含まれていれば、大丈夫です。

私はすべてRobolectricのためにsrc/test/javaを使用しています。独立したAndroidテストプロジェクトで計測されたテストでjunitテストを行います。すべてがmavenで管理されています。

サンプルMorseFlashプロジェクトhere(src/test/javaを例にしています)をチェックしてください。

+0

非常に興味深い - ありがとうyorkw!しかし、それは疑問を抱きます。次に、適切な「テスト」サブツリーとなるのでしょうか?私はメインクラスを 'src/main/java'の下に置いて、' src/test/java'の下に同じ正確なパッケージツリーを複製するのが好きです。そのため、 'com.foo.Widget'クラスは' src/main/java/com/foo'にあり、 'src/test/java/com/foo/WidgetTest'というURIにユニットテストがあります。この '' src/main/java'-only "パラダイムは今やこのような構造にどのように対応していますか? – IAmYourFaja

+0

@AdamTannon、私の更新を参照してください。 – yorkw

関連する問題