簡體   English   中英

為 CDI 指定 beans.xml 的自定義路徑

[英]Specifying a custom path of beans.xml for CDI

當我使用 Spring 並且想要編寫單元測試時,我可以通過多種方式指定自定義上下文配置,例如,通過提供context.xml的不同路徑。

但是,如果我想使用自定義依賴項配置在同一個 maven 模塊中進行測試,我不知道如何為 CDI 執行此操作。

文檔對這一點非常嚴格

對於 EJB 模塊或 JAR 文件,beans.xml 部署描述符(如果存在)必須位於 META-INF 目錄中。

如果源代碼中已經存在/META-INF/beans.xml ,我就不能在測試資源中放置一個不同的(它會被忽略)。

有沒有辦法配置Weld/CDI ,可能是通過使用一些系統變量來更改beans.xml的路徑?

對於 EJB 模塊或 JAR 文件,beans.xml 部署描述符(如果存在)必須位於 META-INF 目錄中。

確實如此,但是這涉及到一個已經創建/打包的 JAR,然后您將其用作應用程序的依賴項。 但是您的應用程序也可以擁有自己的beans.xml beans.xml只是定義一個 bean 檔案和該檔案中的某些結構(攔截器、裝飾器等)一種方法。 這意味着,例如,通過該 JAR 庫中的beans.xml啟用的攔截器將不會在您的應用程序中啟用,除非您也在該應用程序的beans.xml中指定它。 因此,您在文檔和您詢問的測試之間看到的鏈接可能不正確/不相關。 不過,不確定我是否讓你在那里。

有沒有辦法配置Weld,可能是通過使用一些系統變量,來改變beans.xml的路徑?

不,沒有。 但是在 EE 中,您主要使用 Arquillian 進行測試,這允許您(除其他外)定義測試部署。 您可以在其中包含您想要的任何自定義beans.xml 這也是 Weld/CDI TCK 測試大部分時間使用的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM