簡體   English   中英

如何在JUnit測試類中注入多個EJB

[英]How to inject multiple EJB in a JUnit test class

我正在嘗試測試具有與其他EJB連接的多個EJB的類。

如何將該類中的所有EJB注入到JUnit測試類中?

謝謝

您不應注入所有依賴項。 您應該使用Mockito之類的框架來模擬/模擬那些依賴關系,以便測試EJB。 假設您有以下bean:

@Stateless
public class ServiceBean implements Service {

    @Inject
    private Dao dao;  

    public boolean insert(Someclass someClass){
        return dao.insert(someClass);
    }

}

您應該以這種方式使用Mockito模擬Dao (應該是接口,而不是具體的類):

@RunWith(MockitoJUnitRunner.class)
public class ServiceBeanTest { 

    @Mock
    private Dao daoMock;

    @InjectMocks
    private ServiceBean bean;

    @Test
    public void testInsert() {
        when(daoMock.insert(Matchers.any(SomeClass.class))).thenReturn(true);
        assertTrue(bean.insert(new Someclass()));
    }

}

這里發生了什么事:

  • Mockito正在通過接口Dao創建一個模擬對象,該對象將模仿一個實現。
  • 該模擬將注入到ServiceBean實例中;
  • 指導模擬when使用方法。
  • 您的單元測試僅驗證ServiceBean行為,不對依賴項執行任何測試,應在另一個測試類中對其進行測試。 這使您可以隔離類中的組件。

Mockito網站包含有關如何正確執行此操作的各種教程。

暫無
暫無

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

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