0

すべてのテストを実行するために、xml ファイル「test_build.xml」を作成しました。テスト ファイルとコンパイル済みソース ファイルをコンパイルしました。さらに、ソース/テスト ファイルで使用されるいくつかの jar ファイルが必要です。これらすべてのディレクトリ (コンパイルされたコード)/jar をパスに含め、それをクラスパスとして使用します。実行時例外が発生します。

< project name="myandroid" >

<path id="test.classpath">
    <pathelement path="a.jar"/>
    <pathelement path="tests"/> 
    <!-- other jars and directories -->
</path>
<target name="test-run" description="Run Test">
    <delete dir = "test_result" />
    <mkdir dir = "test_result" />
    <junit printsummary="yes" haltonfailure="yes" showoutput="yes" >
        <classpath refid="test.classpath"/>
        <batchtest fork="yes" todir="test_result">
            <formatter type="xml"/>
            <fileset dir="tests">
                <include name="**/*.java"/>
            </fileset>
        </batchtest>
    </junit>
</target>

コマンドラインで次のコマンドを実行しています: ant "test-run" -f test_build.xml

取得 :

テスト走行:

[delete] Deleting directory test_result
[mkdir] Created dir: test_result
[junit] Exception in thread "main" java.lang.RuntimeException: Stub!
[junit]     at junit.framework.TestResult.<init>(TestResult.java:4)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:353)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1052)
[junit]     at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:906)
[junit] Running RegexTest
[junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec
4

2 に答える 2

1

アプリケーションのandroid.jar作成に使用するファイルには、スタブ実装のみが含まれています。

public void something(...) { 
    throw new RuntimeException("Stub!"); 
} 

実装をスタブ化すると、SDK のサイズが大幅に縮小されます。これは、Android のパブリック API に対してビルドするため、アプリのビルドには問題ありません。最終的に APK を実行したり、テストを再度実行したりするには、デバイスまたはエミュレーターにデプロイする必要があります。

アップデート

問題を実際に解決するには、ラップトップで接続されたデバイスまたは実行中のエミュレータ インスタンスが必要です。使用可能なすべてのデバイスを次のようにリストして、アクセス可能であることを確認しますadb

$ adb devices

ターゲットはrun-tests、エミュレーターまたはデバイスにアプリケーションを自動的にデプロイする必要があります。そうでない場合は、おそらく最初にプロジェクトを更新する必要があります。Android ドキュメントのセクションRunning Testsには、次のように記載されています。

Android ツールでテスト プロジェクトを作成すると自動的に作成されるターゲット run-tests を使用して、Ant を使用してテスト プロジェクト内のすべてのテストを実行できます。

このターゲットは、必要に応じてメイン プロジェクトとテスト プロジェクトを再構築し、テスト アプリケーションを現在の AVD またはデバイスにインストールしてから、テスト アプリケーションのすべてのテスト クラスを実行します。

この機能を使用するように既存のテスト プロジェクトを更新できます。これを行うには、update test-project オプションを指定して android ツールを使用します。

于 2013-02-01T08:32:32.463 に答える
0

テストクラスパスを最初に配置して、パス宣言を反転します!!!
適切に動作するはずです;-)

于 2013-11-15T12:20:11.553 に答える