1

Eclipse RCP で作成されたプロジェクトがあり、SWTBot ( http://wiki.eclipse.org/SWTBot ) を使用して GUI テストを実行しています。

ここで、このテストの実行を自動化したいと思います。現在、すべてのビルドを実行する ant タスクがあるため、ant で GUI テストも実行したいと考えています ( http://wiki.eclipse.org/SWTBot/Ant#Antによると)。

エクスポートした製品で OSGi フレームワークを起動し、JUnit ヘッドレス実行を開始し、テスト プラグインとテスト クラスを見つけてテスト スイートを実行する Ant タスクを作成しましたが、失敗しました。

失敗する理由は、テスト内で jmockit を使用しているためです。ガイド ( http://jmockit.googlecode.com/svn/trunk/www/gettingStarted.html ) によると、Eclipse を実行するためにこのテストを実行できます (jmockit をグローバル クラスパスに追加し、-javaagent:jmockit.jar をテスト実行構成での VM 引数) が、ant タスクでの実行 (クラスパスへの jvmarg と jmockit の追加) に失敗しました。

テスト実行中にこの構成を使用すると、次の例外が発生します

mockit/MockUp
java.lang.NoClassDefFoundError: mockit/MockUp
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
...
Caused by: java.lang.ClassNotFoundException: mockit.MockUp
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:494)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:398)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

その後、jmockit を osgi 化して製品に追加したところ、次の警告が表示されました。

WARNING: JMockit was initialized on demand, which may cause certain tests to fail;
please check the documentation for better ways to get it initialized.

少し掘り下げてみると、次のメール交換が見つかりました: http://code.google.com/p/jmockit/issues/detail?id=203と rliesenf...@gmail.com による最後のコメント:

(少なくとも私にとっては)これを実際に進めるのが非常に困難であり、それに取り組まなければならない動機がほとんどないため(結局のところ、「Eclipse JUnitプラグインテスト」は小さな「ニッチ」環境です)、締めくくりますとりあえずこれ。また、ツールキットの他の領域でやるべきことがたくさんあるので (JMockit 2 を考慮しなくても)、この種の作業に費やす時間を正当化するのは困難です。

その時以来、この問題が解決されたか、少なくともいくつかの回避策が見つかったことを願っていました.

同様の問題に遭遇したことがあり、解決策/提案を共有したい人はいますか?

4

0 に答える 0