簡體   English   中英

焊接和測試罐

[英]Weld and test-jar

我們有一個maven多模塊項目,其中包含以下模塊:

  • PRJ-SRV
  • PRJ客戶端

srv項目包含EJB。 在prj-srv / src / test中,我們具有EJB的@Alternative實現,在bean.xml的Alternatives部分中指定。 這可行。

項目prj-client具有prj-srv作為依賴項。 此外,它還依賴於test-jar類型,范圍測試的prj-srv,因此它可以使用替代的EJB實現進行測試。 這也可以。

現在,在prj-client / src / main / java中,我們用限定符@Cacheable注釋了EJB接口的本地實現(以便我們可以緩存數據)。 我想做的是在prj-client / src / test / java中設置測試,以便它們使用prj-srv中的測試實現(這些實現不可緩存,但誰在乎,因為它是用於測試的)。

我努力了:

  • 在prj-client / src / test / java中使用生產者方法(@Produces @Alternative @Cacheable)創建一個類,但是我不知道如何配置beans.xml來將其設置為替代方法

  • 在prj-srv / src / test / java中創建擴展測試EJB的類,將其注釋為@Alternative @Cacheable,然后將它們放在src / test / resources / META-INF / beans.xml中的Alternatives部分中,但焊接仍會注入來自src / main / java的“真實” @Cacheable bean。

將@Alternative與限定符混合是否存在問題? 如何獲得測試以使用合格類的替代實現?

剛剛發現:我忘了用@Inject標記@Cacheable實現的構造函數。 顯然,即使在bean.xml中將其標記為替代方法,由於Weld不知道如何初始化它,而不是拋出錯誤,它只是默默地決定忽略替代方法...

暫無
暫無

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

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