2010-10-06 30 views
0

我有定義數據庫方法(如插入和更新)和實現它的具體類的抽象類。數據庫配置(dataSource,DatabaseTarget等)在context.xml文件中定義爲bean。單元測試Spring 3數據庫方法

數據庫,其方法控制器工作時,我使用Spring 3個anotations通過

private AbsractClass a; 

構造:

@Autowired 
public Controller(AbstractClass a) { 
    this.a =a; 
} 

...併爲一個getter。

調用數據庫的方法是通過

getA().insertValues(); 

做,但我想編寫JUnit測試我的方法。這種情況有沒有例子?我已經搜索了幾個小時。

+2

哪些方法? DAO方法或控制器方法? – skaffman 2010-10-06 08:46:10

+0

編寫dao測試應該有對spring的依賴嗎?假設您不使用任何彈簧支持來訪問數據,則可以獨立於Web層測試數據層。 另外,控制器是否應直接訪問數據相關的類?也許應該在這裏介入一些服務層。 – 2010-10-06 11:23:56

回答

1

如果你想不接觸數據庫(這是正確的方式)來測試你的控制器方法,創建一個擴展AbsractClass一個新的類,並把它作爲參數傳遞給控制器​​類,例如:

CustomerController controller= new CustomerController(new InMemoryCustomerDao()); 
//call your actions and assert, all calls to the database will hit the InMemoryDao. 

另一種方法是使用Mock Object如果您不想在項目中創建額外的假類,或者您需要聲明這些參數被正確調用。