2

AdobeCQ5.4内で実行されるいくつかの単体テストを作成したいと思います。私はCQ内でテストするために、この記事で説明されていることを行っています。

http://jtoee.com/2011/09/799/

ただし、Javaコードで単体テストクラスを作成した後、org.junit名前空間を解決できないため、CRXDE内でコンパイルされません。説明したように(Apache Sling JUnit Core)FelixにJUnitバンドルをインストールしてアクティブ化しましたが、このアクティブなFelixバンドルをCRXDEで見つけるには、他に何かする必要があると思います。接続しているCQ5インスタンスのFelixバンドルは、これらのエクスポートされたパッケージを示しています。

junit.framework,version=4.8.2
org.apache.sling.junit,version=1.0.7.SNAPSHOT
org.apache.sling.junit.annotations,version=1.0.7.SNAPSHOT
org.junit,version=4.8.2
org.junit.matchers,version=4.8.2
org.junit.rules,version=4.8.2
org.junit.runner,version=4.8.2
org.junit.runner.manipulation,version=4.8.2
org.junit.runner.notification,version=4.8.2
org.junit.runners,version=4.8.2
org.junit.runners.model,version=4.8.2

以下のこのサンプルユニットテストコードでは、最後の3つのインポートステートメントは「解決できません」。

import org.apache.sling.api.resource.*;
import org.junit.*;
import org.junit.runner.*;
import org.apache.sling.junit.annotations.*;

@RunWith(SlingAnnotationsTestRunner.class)
public class MyUnitTest {

    public ResourceResolver getResourceResolver() {
        try {
            return getResourceResolverFactory().
                    getAdministrativeResourceResolver(null);
        } catch (LoginException e) {
            fail(e.toString());
        }
        return null;
    }
}

FelixにインストールされたOSGIバンドルは、CRXDEを使用してJavaクラスで参照できるようにアクセスできるはずですが、インストールしたJUnitバンドルでは発生しません。なぜだめですか?CRXDEにOSGIバンドル参照を見つけてCRXDE内でコンパイルさせるは、何をする必要がありますか?

4

2 に答える 2

2

短い答え

問題はCQではなく、CRXDEにあります。CRXDEは、必要なjarファイルをローカルマシンに自動的にダウンロードしてキャッシュするため、CQから常に取得する必要はありません。

「パッケージ探索」ナビゲーションに切り替えてから、プロジェクト「{SERVER} {PORT} {HASH}」を展開すると、参照ライブラリというフォルダーが表示されます。右クリックして、[ビルドパス]>>[ビルドパスの構成]を選択します。そこから、必要な依存関係をプロジェクトに追加できます。

長い答え

CRXDEは、バンドルを作成するための優れたツールではありません。Eclipseなどの本格的なIDEを使用してバンドルを作成し、ビルドツールとしてApacheMavenを利用することをお勧めします。Apache Mavenは、依存関係を自動的に管理し、コードでテストを実行し、テストとランタイムの依存関係を分離できます。

そうすれば、そのようなjUnitを実際には必要としない依存関係をOSGiコンソールにロードする必要がなくなり、バンドルの構築とデプロイの方法をより細かく制御できます。

Dayには、Eclipseを使用してCQプロジェクトを構築するためのセットアップを行うための非常に優れたガイドがあります。 http://dev.day.com/docs/v5_2/html-resources/cq5_guide_developer/ch04s02.html

于 2012-01-18T03:13:39.103 に答える
2

あなたがしていることは一見正しいように見えます。

必要なバンドルをインストールした後、CQ を再起動しましたか? 理論的には必要ないはずですが、バンドル コンパイラが新しく利用可能なパッケージを正しく取得しているかどうか疑問に思っています。

このパッケージを新しい CQ にインストールした後、 http: //dl.dropbox.com/u/715349/cq5-examples/junit-tests-1.0.zip (md5 2915123ad581aa225bd531247ea02878) に同様の単純な例を含むコンテンツ パッケージをアップロードしました。 5.4 インスタンスのサンプル テストは、 http://localhost:4502/system/sling/junit/経由で正しく実行されます

私のサンプルを試して、あなたのサンプルと比較してみてください。

于 2012-01-17T10:50:15.803 に答える