2016-01-18 59 views
0

我想測試一個正在使用dao的類。在我的測試課中,我嘲笑了DAO並將模擬注入了我測試的類的一個實例。我試圖做一個DAO類的假對象。JUnit創建dao假對象JAVA

@RunWith(MockitoJUnitRunner.class) 
public class UserManagerTest { 

    @Mock 
    private UserManagerDao umDao; 

    @InjectMocks 
    private UserManager um = new UserManager(); 

    @Before 
    public void initializeMockito() { 
     MockitoAnnotations.initMocks(this); 
    } 

    public void testGetUserId() {  

    } 

在這裏,這是從UserManager.class和DAO類的方法

userManager.class

public long getUserId(String email) throws Exception { 
    String[] partsOfMail = email.split("@");   
    return umDao.getUserId(partsOfMail[0], partsOfMail[1]); 
} 

DAO類

public long getUserId(String userName, String domain) throws Exception { 
    String sql = msa.getMessage("sql.select.user_id"); 
    Object[] params = new Object[] { userName, domain }; 

    List<Long> result = getJdbcTemplate().queryForList(sql, params, Long.class); 

    if (result.size() > 0) { 
     return result.get(0); 
    } 

    return 0; 
} 
+0

你面臨什麼問題?是否有意外的行爲,異常等...? – Jonathan

+0

@Jonathan我不知道如何製作dao類的假物。 – NoSuchUserException

+0

這很好,但從問題中不清楚問題是什麼。這可能有助於添加額外的細節。例如,如果'umDao'是'null'或者它實際上不是一個模擬對象等......它將幫助人們回答你的問題。 :-) – Jonathan

回答

0

什麼是你的問題?如果你問如何在DAO中模擬一些方法,這是一個簡單的例子。

@Test 
public void testGetUserId() {  
    when(umDao.getUserId(<PARS>)).thenReturn(1L); 
    assertThat(um.getUserId(<PAR>)).isEqualTo(1L); 
} 
1

看評論:

​​

欲瞭解更多信息,看看MockitoJUnitRunnerInjectMocks文檔。

Mockito的文檔包括很多示例,可以找到here

+0

現在測試工作。謝謝。你會告訴我如何製作一個虛假的dao對象來測試getUserId方法嗎? – NoSuchUserException

+1

看看[這裏](http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html),它是關於如何使用Mockito特性的「示例」文檔。 – Jonathan