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 を考慮しなくても)、この種の作業に費やす時間を正当化するのは困難です。
その時以来、この問題が解決されたか、少なくともいくつかの回避策が見つかったことを願っていました.
同様の問題に遭遇したことがあり、解決策/提案を共有したい人はいますか?