[英]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.