2011-12-15 69 views
3

我不知道我在做什麼錯,但我非常沮喪,並且在與時間賽跑中。我有從數據庫派生的EJB實體,無狀態的本地會話bean(大多數是Facade),它們將這些實體持久化爲使用會話Bean的數據庫和受管Bean。託管和會話bean的模擬和集成測試

所以我的管理豆看起來像這些:

@ManagedBean 
public class SomeBean { 

    //attributes 

    @EJB 
    private SomeSessionBean sb; 

    // getters and setters and other methods 

    public void createObject(){ 
     // some logic 
      sh.method(arguments); 
    } 
} 

我需要做一些模擬的JUnit(最好用的Mockito)在我管理的bean測試。 我還需要做的模擬,並與數據庫集成測試在我的會議beans.Also使用的Arquillian幾個testings(從我瞭解的Arquillian集成了JBoss服務器測試)

誰能解釋或寫一些示例代碼,或點到一些網站,但請讓他們與我的情況有關?

我正在NetBeans的Web應用程序中工作。

回答

1

使用JUnit和Mockito測試您的託管bean很容易,如果您使用依賴關係的setters。你舉的例子可能是這樣的:

@ManagedBean 
public class SomeBean { 

    private SomeSessionBean sb; 

    @EJB 
    public void setSomeSessionBean(SomeSessionBean sb) { 
     this.sb = sb; 
    } 

    public void createObject(Object obj) { 
     sb.createObject(obj); 
    } 
} 

測試應該是這樣的:

@RunWith(MockitoJUnitRunner.class) 
public class SomeBeanTest { 

    private SomeBean bean; 

    @Mock 
    private SomeSessionBean sb; 

    @Before 
    public void setUp() throws Exception { 
     bean = new SomeBean(); 
     bean.setSomeSessionBean(sb); 
    } 

    @Test 
    public void testCreateObject() throws Exception { 
     Object obj = new Object(); 

     bean.createObject(obj); 

     Mockito.verify(sb).createObject(obj); 
    } 
} 

正如你所看到的,我在初始化設置的JUnit的@Before方法管理bean嘲笑所有的依賴。在實際測試中,我使用Mockito.verify來驗證在會話bean上調用createObject

+0

是否有替代方法來做這樣的測試,而不是爲我想模擬的每個EJB提供setter? – Marcel 2014-09-08 08:47:53