2

我想编写一些在 Adob​​e CQ 5.4 中运行的单元测试。我正在做本文中描述的在 CQ 中进行测试的内容:

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

但是,在我的 Java 代码中创建单元测试类之后,它不会在 CRXDE 中编译,因为它无法解析 org.junit 命名空间。我按照描述(Apache Sling JUnit Core)在 Felix 中安装并激活了 JUnit 包,但我猜我还需要做一些其他事情才能在 CRXDE 中找到这个活动的 Felix 包。我连接的 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

在下面的这个示例单元测试代码中,最后三个导入语句“无法解析”。

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?从理论上讲,这不应该是必需的,但我想知道捆绑编译器是否正确地选择了新可用的包。

在新的 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 回答
2

简答

问题不在于 CQ,问题在于 CRXDE。CRXDE 会自动下载并缓存所需的 jar 文件到您的本地机器上,因此不必经常从 CQ 检索它们。

如果您切换到“Package Explore”导航,然后展开项目“{SERVER} {PORT} {HASH}”,您应该会看到一个名为 Referenced Libraries 的文件夹。右键单击并选择构建路径>>配置构建路径。从那里您可以将所需的任何依赖项添加到项目中。

长答案

CRXDE 不是创建捆绑包的好工具。最好通过 Eclipse 等成熟的 IDE 创建包并使用 Apache Maven 作为构建工具。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 回答