Linux で Android 用の UIAutomator ライブラリを使用してテストを実行する際に問題が発生しています。基本的なセットアップは、Nexus 4、または 4.2.2、JDK6、Eclipse、および Linux Mint 13 を搭載したエミュレーターです。
この問題の根本は次のとおりです。
INSTRUMENTATION_STATUS: stream=
Test results for WatcherResultPrinter=
Time: 0.007
OK (0 tests)
INSTRUMENTATION_STATUS_CODE: -1
これは、Linux で jar ファイルを作成したときに得られるものです。Windows または OSX でビルドすると、すべて問題なく動作するように見えます。この特定のケースでは、「ホーム」ボタンを押すテストが 1 つだけあります。
同じコードを使用してプロジェクトを作成し、他の環境 (osx/windows) で同じ手順を実行すると、テストは期待どおりに実行されます。
私の質問は、プラットフォームではなく、Linux で jar が作成されたときに、テスト ランナーがクラスを見つけられないのはなぜですか? 私の最善かつ唯一の推測は、コンパイル時にどういうわけかJavaパスが正しく設定されていないため、jarファイルが正しく構築されていないということです。Eclipse 内からテストを実行すると、最初は 'ClassNotFoundException' が発生しましたが、osx/windows ではテストは JUnit で実行されますが、失敗します。
これを掘り下げたところ、コンパイラはすべて、システムのさまざまな部分でさまざまな Java バージョンを指していることがわかりました。これを修正し、java6jdk の 1 つのインスタンスを除くすべてを削除し、JAVA_HOME、Eclipse ビルド パス、および Java コンパイル パスがすべて同じインスタンスを指していることを確認しました。
このすべての後、テストはまだビルドされているように見えますが、テスト ランナーはそれらを見つけることができません。私はここで私の知識の終わりにいます。
ありがとう
編集: jar tvf:
spicy@ubuntu:~/workspace/TestOne/bin$ jar tvf testui1.jar
0 Sun Apr 07 14:23:24 PDT 2013 META-INF/
103 Sun Apr 07 14:23:22 PDT 2013 META-INF/MANIFEST.MF
1052 Sun Apr 07 14:23:24 PDT 2013 classes.dex
コード:
package com.test;
import android.util.Log;
public class FirstTest extends UiAutomatorTestCase {
public void thisTest() throws UiObjectNotFoundException {
getUiDevice().pressHome();
Log.i("HELP","HELP ME");
}
}