2009-09-28 130 views
1

我在春天注射3個等級層次 - 休息,業務邏輯和數據庫操作。對於BL和DAO的Junit測試工作正常,其餘時間只能注入業務邏輯ioc層。彈簧和Struts2的REST - JUnit測試

我對JUnit測試晚飯類:

import org.springframework.test.AbstractTransactionalSpringContextTests; 

public class AbstractTest extends AbstractTransactionalSpringContextTests { 
protected static final String path = "config/spring/applicationContext.xml"; 

/** 
* Disabled autowire by type 
* Disabled dependency check 
*/ 
public AbstractTest() { 
    super(); 
    this.setAutowireMode(AUTOWIRE_BY_NAME); 
    this.setDependencyCheck(false); 
} 

@Override 
protected String[] getConfigLocations() { 
    return new String[] { 
      path 
    }; 
} 
} 

所以 - REST調用業務邏輯,這就要求數據庫操作。空指針異常屬於數據庫調用的業務邏輯。

更多信息有例如: REST:的getUser(ID)調用 BL:getUserBO(ID)調用DAO :getUserDAO

空指針在getUserBO方法扔在getUserDAO(ID)。這隻會發生在它正在部署的junit測試中。

+0

哪種方法拋出NullPointerException異常? –

+0

我編輯了這個問題。 – Trick

回答

0

我發現這是Struts2的其餘類映射的問題。所以,春季不能注入......

0

你有一個數據源bean中定義?沒有更多的細節(如堆棧跟蹤,應用程序上下文文件等),這是最好的猜測我有...

+0

我編輯了這個問題。棧跟蹤和appContext是(我猜)沒有意義? – Trick

+0

你能添加一些日誌記錄語句setter方法爲userDAO的(或曾經對象爲空),以驗證它是由彈簧測試期間初始化? 調用DAO之前,斷言它不爲空如下: userDAO的DAO = getUserDao(); assert(dao!= null):「UserDao爲null:BUG !!!」; – les2