問題タブ [tycho-surefire-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
junit - SWTBot: tycho で実行中のエラー
Eclipse RCP アプリケーションの SwtBot テスト ケースを作成しています。Eclipse で正常に動作しています。現在、テスト スイートを既存の tycho と統合しているため、製品のテスト ケースを作成しながら実行することもできます。SWTBot テスト スイート用に作成された Pom.xml を以下に示します。
親 pom.xml には SWTBot モジュールも含まれており、以下のようになります。
tycho が SWTBot テスト ケースを実行しようとしているときに、以下のエラーが発生します。
ログ ファイルでは、アプリケーション プラグインの依存関係を解決できません。ログファイルの内容は次のとおりです。
構成の何が問題なのか教えてください。
maven - Tycho で SWTBot テスト スイートを起動しようとすると、「予期しないエラーが発生しました (リターン コード -1)」
Eclipse RCP アプリケーションの SWTBot テストを作成しています。RCP アプリケーションには NatTable コンポーネントが含まれており、パースペクティブを有効/無効にする認証メカニズムがあります。Eclipse から起動すると、テスト スイートは正常に動作します。現在、Tycho との統合を試みています。
これは、SWTBot テスト スイートを実行するために作成された pom.xml です。
Tycho ビルドを実行して SWTBot テスト スイートを起動すると、以下のエラーが発生します。
[エラー] プロジェクト com.tsystem.rvs.client.gui.swtbot.test で目標 org.eclipse.tycho:tycho-surefire-plugin:0.20.0:test (default-test) を実行できませんでした: 予期しないエラーが発生しました (戻りコード -1)。詳細については、ログを参照してください。→【ヘルプ1】
私の最初の質問は、Tycho が最初に製品を作成せずに RCP アプリケーションでテストを実行するにはどうすればよいかということです。私はいくつかのサンプルを試しましたが、それらのサンプルでは、製品を作成する前にテスト スイートが実行されています。スプラッシュ スクリーン、サーバーへのログイン メカニズムのカスタム構成があるため、swtbot テスト スイートを起動するために追加の構成が必要です。1 つのパースペクティブとビューで RCP アプリケーションを起動しようとしましたが、tycho では正常に動作しますが、この場合、tycho はアプリケーションを起動できません。target/data および configuration の下にもログ ファイルは作成されません。
SWTBot テスト スイートの実行後に製品が作成された場合、Tycho がプラグインを取得してアプリケーションを起動する場所を誰か説明できますか?
eclipse - SWTBot テストで rcp アプリケーションを再起動します
rcp アプリケーションを再起動する SWTBot テストの作成に問題があります。Eclipse から一連のテストを実行すると、rcp アプリが再起動すると、スイートも再起動します。そのため、再起動前にすでに実行されていたテストが再度実行されます。Tycho Surefire、bashのみを使用して、再起動で区切られた一連のテストを実行できることを読みました... tychoで実行しようとしましたが、再起動を伴うテストを実行すると、次のエラーが発生します。
なぜこれが起こるのか分かりますか?tycho でスイートを実行するだけでは十分ではありません。テスト実装で何かを変更する必要がありますか?
java - Tycho Surefire で実行すると OSGi バンドルがアクティブにならない
通常のマニフェスト管理の依存関係と Maven Tycho を使用した外部ビルドを使用して Eclipse でビルドされた OSGi バンドルがいくつかあります。
Equinox の Eclipse 内でバンドルを実行すると、正常に動作します。Tychoでそれらを構築するとうまくいきます。
ここで、Tycho Surefire を使用して統合テストを実行したいと考えています。そのために、いくつかの基本的なテストを含む単純なテスト バンドルを作成しました。テスト中のバンドルは、正しく実行するために、OSGi コンテナーに存在する他のバンドルといくつかのマイナーな開始レベルの調整に依存しています。前述のように、Equinox で通常どおり実行すると、バンドル自体は完全に正常に起動します。
そのため、Tycho Surefire でこれを模倣するために、テスト バンドルの pom.xml で次のように指定しました。
興味深いことに、テストは失敗しました。いくつかの調査の後、失敗したテストの実行中/実行後に OSGi コンソールにアクセスして問題をさらに調査する方法を見つけました ( tycho テストの実行後の OSGi コンソール)。
私の発見は、すべての必要なバンドル (すべての推移的に派生したバンドルとすべての手動で指定されたバンドル) が OSGi コンテナーに存在するにもかかわらず、特徴的なバンドルのみ<bundleStartLevel>
が開始されているということです (もちろん、OSGi コアバンドルも)。
したがって、上記の例を考えると、私の調査結果は、 と の両方が解決されている間org.hibernate.osgi
、org.hibernate.entitymanager
最初のものだけが「ACTIVE」状態にあるということです。これは明らかに起動全体を台無しにしており、バンドルが期待どおりに起動する場合、テストは正常に実行されると思います。
「通常の」Eclipse-OSGi-Launch 構成を見ると、デフォルトで true に設定されている「Default Auto-Start」パラメーターがあります。Tycho Surefire のドキュメントにはそのようなものは見つかりませんでしたが、一部のバンドルに特定の開始レベルを設定すると、他のバンドルの自動開始が上書きされる可能性はありますか? 少なくとも、Tycho がデフォルトでバンドルを自動起動していないとは思いません...
その問題をさらに調査する方法についてのヒントや、それぞれに個別の開始レベルを指定することなく Tycho にバンドルを開始させる方法の手がかりをいただければ幸いです。
java - Tycho のテストごとの JVM インスタンス - 確実
簡単に言えば、定数の静的初期化が原因で問題を引き起こすレガシーコードがいくつかあります。一部のテストはそれに依存しており、それらを個別の JVM インスタンスに分離したいと考えています。
これは純粋なMavenで行うのがかなり簡単であることを知っています-確実に
理論的には、上記のコードはテスト クラスごとに新しいスレッドをフォークする必要があります。おそらくこれは、このテストが実行される JVM の新しいインスタンスであるため、すべての静的初期化/クラスのロードが再度行われるため、これで問題は解決するはずです。
ここまでは順調ですね。残念ながら、そのオプションがないように見える tycho-surefire (0.16) を使用しています。私の質問は、この問題を克服できるトリックがあるかどうかです。
たとえば、Junit runner プロバイダーの並列オプションは tycho でどのように機能しますか?
上記のコードは同様の結果を達成しますか? 各テスト クラスが独自の JVM で実行されるという保証はありますか? 無制限のスレッドを指定すると、並列処理の粒度が「クラス」の場合、スレッドの数はテスト クラスの数と同じになると思います。
この混乱を少しでも助けてくれる人がいることを願っています。
+++++++++++++++++++++++++++ 新しい発見 ++++++++++++++++++++ +++++++++++++
興味深いことに、次のオプションで問題を解決できます。
なぜそうなのか、自分自身に説明することは本当にできません。これらのオプションは、テスト クラスごとに個別の JVM をフォークしません。実際には、同じ JVM 内の個別のスレッドで実行されます。これはTychoによってサポートされていないように見えるため、JVMをフォークできません-確かに。私たちの主な問題は、問題を引き起こしている静的に初期化された値で構築された Eclipse osgi コンテナー構造に起因します。Tycho でこの方法でテストを並列処理している場合、実際に JVM をフォークするか、OSGI コンテナを再構築して特定のクラスをリロードする奇妙なことを行う場合があります。それが問題が消えた理由かもしれません。これはすべて非常に奇妙に思えます。tycho-surefire のソースコードをのぞいてみるといいと思います。
maven - Travis Maven ビルドが OutOfMemoryException で終了する
コマンドラインで問題なくビルドできる Travis (dockerized) で実行されている maven ビルドがあります。java.lang.OutOfMemoryError: GC overhead limit exceeded
数日以来、私はテストケース中に取得します。これは、AspectJ テスト ケース中に常に発生します。
最後のビルドの出力はhttps://travis-ci.org/dresden-ocl/dresdenocl/builds/53030457です。
大幅な変更は行っていません。また、アプリケーションの AspectJ 部分には触れませんでした。JAVA_OPTS、MAVEN_OPTS、さらには tycho-surefire-plugin の pom.xml でより多くの RAM を渡して、さまざまなことをテストしました。何も助けませんでした。
エラーを取り除き、すべてのテストを再度実行するにはどうすればよいですか? 彼らはエラーの原因となっている Travis 側の何かを変更したと思います。
maven - Maven tycho-surefire-plugin がリターン コード 13 で失敗する
私は OSGI バンドルを持っており、そのためのテスト バンドルを作成したいと考えています。既存のバンドルは Tycho を使用しているため、tycho-surefire-plugin を使用して Eclipse/Tycho-way のテストも行いたいと考えました。
私が理解している限り、Eclipse の方法でテストするということは、各バンドルに関連するすべてのテスト ケースを含む対応するバンドルがあることを意味します。
そこで、次の pom を使用して新しいバンドル「xyz.tests」を作成しました。
tycho/OSGI-projects META-INF/MANIFEST.MF のその他の標準ファイルも作成しました。
build.properties
および OSGI-INF/l10n/bundle.properties
次に、eclipse-test-pluginが正しく構成されているかどうかを最初に確認したかったので、「テストケース」を作成しました
目標としてmvn packageを実行すると、すべてがエラーなしでコンパイルおよびパッケージ化されます。次に、目標としてmvn integration-testを実行しました (これは tycho-surefire が機能し始める部分です)。そこで、有用な情報を提供しないエラーメッセージが表示されます。
「xyz: Hello/Goodbye World」メッセージは、テストしたいバンドルの開始/停止時に出力されるメッセージです。これは、バンドルの開始時には構成に問題がないように見えますが、その直後にエラーが発生することを意味します。残念ながら、ログファイルを調べても、何も役に立たないことがわかります。
したがって、ヌルポインタ例外が発生することはわかっていますが、その理由/場所はわかりません。
「... 28以上」の後ろに隠されているエラーパス全体を見ると本当に役立つと思いますが、それを見る方法がわかりません...
また、有用なチュートリアルが見つからず、他のEclipseプロジェクトのテストコードベースを多かれ少なかれ調べたため、すべてを正しく構成したかどうかも完全にはわかりません。