2

コマンドラインからテストを実行する場合、非 UI スレッドで Eclipse JUnit プラグイン テストを実行するにはどうすればよいですか? 起動構成ダイアログで、「UI スレッドで実行」チェックボックスをオフにできますが、コマンドラインでプラグイン テストを実行するときにどうすればよいですか?

編集:org.eclipse.pde.junit.runtime.nonuithreadtestapplication非 UI スレッドでテストを実行するときに PDE 起動が使用するもののようですが、それを使用しようとすると、「パラメーター '-port' が見つかりません」というメッセージが表示されます。

ロガー構成をロードしています: c:\work\dev\tooticki\core\ide\eclipse\plugins\com.iar.ide.tests\logging.properties
23:42:51,349 [main] INFO ew - アプリケーションの開始: クラス com.iar.ew.Application
スレッド「WorkbenchTestable」での例外 java.lang.IllegalArgumentException: エラー: パラメータ '-port' が指定されていません
    org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit (RemoteTestRunner.java:303) で
    org.eclipse.pde.internal.junit.runtime.RemotePluginTestRunner.init (RemotePluginTestRunner.java:83) で
    org.eclipse.pde.internal.junit.runtime.RemotePluginTestRunner.main (RemotePluginTestRunner.java:61) で
    org.eclipse.pde.internal.junit.runtime.NonUIThreadTestApplication.runTests(NonUIThreadTestApplication.java:23)で
    org.eclipse.ui.internal.testing.WorkbenchTestable$1.run(WorkbenchTestable.java:71) で
    java.lang.Thread.run(Thread.java:619) で
4

3 に答える 3

1

コマンドラインからテストを実行するというのは、PDE ant ゴールを呼び出すという意味ですか?

PDE テストを実行する Ant タスクには、コア テストui-testという 2 つのターゲットがあり、それぞれヘッドレス テストと UI を使用してテストします。Eclipse テスト フレームワークに関する詳細な記事がありますが、基本的には関連するターゲットを選択するだけでよく、テスト対象のコードが UI にアクセスする必要がない限り、コア テスト ターゲットの下でテストが実行されます。PDE と Ant に関するこの Eclipse コーナーの記事も役立つかもしれません。

別の方法でテストを呼び出す場合。PDE ant タスクのソースを参照して、環境のセットアップ方法を理解することができます。

于 2009-09-30T07:20:15.360 に答える
1

org.eclipse.pde.internal.junit.runtime.UITestApplication から拡張する新しいアプリケーション クラスを作成します。

public class NonUIThreadTestApplication extends UITestApplication {
  public void runTests() {
    fTestableObject.testingStarting();
    try {
      EclipseTestRunner.run(Platform.getCommandLineArgs());
    } catch (IOException e) {
      e.printStackTrace();
    }
    fTestableObject.testingFinished();
  }
}

依存関係の制限により、EclipseTestRunner を org.eclipse.test プラグインからそのままプラグインにコピーする必要があると思います。

新しいアプリケーションを plugin.xml に追加します。

<extension
         id="nonuithreadtestapplication"
         point="org.eclipse.core.runtime.applications">
  <application visible="false">
    <run class="com.my.test.NonUIThreadTestApplication" />
  </application>
</extension>

org.eclipse.test/library.xml に新しいセクションを追加します。

<target name="nonui-thread-ui-test" description="Eclipse application used to launch UI plugin tests in a non-UI thread." depends="init">
  <antcall target="${launchTarget}">
    <param name="application" value="com.my.test.nonuithreadtestapplication" />
  </antcall>
</target>

これが完了したら、またはnonui-thread-ui-testの代わりに target を使用してテストを実行できます。ui-testcore-test

幸運を!

于 2010-09-30T17:00:39.610 に答える
0

どうやら、org.eclipse.pde.junit.runtime.nonuithreadtestapplication専用のテスト結果リスナーが必要です。これを行う方法は、この記事で説明されています。

于 2010-10-01T05:24:24.283 に答える