2012-05-04 134 views
4

我一直在嘗試對我的DAO進行單元測試,但是我還沒有找到辦法,但我感覺有點絕望。我有一個微小的DAO,看起來像這樣:單元測試一個DAO

public interface ElectionsDao { 
    List<String> getDates(); 
} 

我使用Spring框架使用SimpleJdbcTemplate做DI。我的實現看起來是這樣的:

我想要做的就是使用了EasyMock的getDates()只是一個單元測試,但我還沒有發現這樣做的方式。我很困惑。有人可以幫我嗎?

+1

您將需要使用支持類擴展的最新EasyMock來覆蓋'getSimpleJdbcTemplate()'的行爲以返回'SimpleJdbcTemplate'的一個模擬對象以及爲'query'定義的行爲。 – srkavin

回答

3

看起來好像getSimpleJdbcTemplate是單元測試的最大問題。您可以測試的一種方法是擴展被測試的類並覆蓋getSimpleJdbcTemplate方法,例如

public class ElectionDaoTest { 

    /** Class under test */ 
    private ElectionsDaoImpl dao; 

    @Before 
    public void setUp() { 
     dao = new ElectionsDaoImpl(){ 
      SimpleJdbcTemplate getSimpleJdbcTemplate(){ 
       // Return easy mock version here. 
      } 
     }; 
    } 

    @Test 
    // Do tests 
} 

EasyMock可能有一個更簡單的方法,但我不熟悉它。

3

謝謝您的意見。我決定用Spring來做測試。我的測試代碼如下所示:

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations="classpath:beans.xml") 
public class DBConectionTest{ 

    @Resource 
    private ElectionsDao electionsDao; 

    @Test 
    public void testGetDates(){ 
     List<String> dates = electionsDao.getDates(); 
     assertNotNull(dates); 
    } 
} 

我正在使用運行我的項目時使用的同一個xml文件。希望它能幫助別人。