我想編寫一些在Adobe CQ 5.4中運行的單元測試。我在做什麼這篇文章中CQ中描述來進行測試:編譯Adobe CQ5 CRXDE中引用Felix OSGI包的單元測試JUnit代碼
然而,當我在我的Java代碼創建單元測試類,它不會CRXDE內編譯,因爲它不能解析org.junit命名空間。我按照描述(Apache Sling JUnit Core)安裝並激活了Felix中的JUnit包,但我猜測爲了在CRXDE中找到這個活動的Felix包,我還需要做其他事情。在CQ5實例中的菲利克斯捆綁我連接到顯示了這些導出包:
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語句「解決不了。」
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;
}
}
這是我的新手理解是安裝在費利克斯OSGi包應該可以訪問對我來說,在使用CRXDE我的Java類引用,但情況並非如此,因爲我安裝了JUnit包。爲什麼不?我需要做什麼才能獲得CRXDE以找到OSGI包引用並在CRXDE中編譯?
嗨肖恩,我試圖創建相同的測試設置。你有沒有取得任何成功的解決方案呢? Thx很多幫助。你能指點我一些體面的信息嗎? – Denis 2012-04-03 14:18:53
我還沒有找到一個答案又爲何安裝捆綁到菲利克斯是不夠的CRXDE來解決引用。最後我做的是從我的代碼中重新引用Felix中安裝的jar文件。我在源代碼包含我的單元測試創建了一個單獨捆,以及我在同一水平作爲我的src文件夾增加了一個「庫」的文件夾,並把的junit-4.10.jar和org.apache.sling.junit.core- 1.0.7-SNAPSHOT.jar這樣我的代碼就可以解析引用。這與Bertrand所做的相似......我只是不明白爲什麼需要重新引用。 – Shawn 2012-04-03 18:56:41