A. 如何用Junit4測試Spring框架下配置的類
1 建立一個test的目錄,在此目錄下放置所有的JunitTestCase類和TestCase的配置文件
2 將項目中的Spring配置文件(默認名稱為applicationContext.xml)復制到test目錄下,並重新命名為JunitTestConf.xml。
3 根據Junit測試的需要修改JunitTestConf.xml文件中的內容,如資料庫連接等。
4 新建一個名為SpringConfForTest.java的類,在此類中配置Spring啟動所需的配置文件,並啟動Spring。此類的內容如下:
package test;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.;
import com.soma.global.WebContextHolder;
public class SpringConfForTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
//Spring啟動所需要的配置參數文件,其中test/JunitTestConf.xml文件中保存了資料庫連接等參數,可根據具體情況做修改
String[] paths = new String[] {"test/JunitTestConf.xml", "com/soma/conf/applicationContext--hr.xml","com/soma/conf/applicationContext-.xml","com/soma/conf/applicationContext--bug.xml","com/soma/conf/applicationContext--change.xml","com/soma/conf/applicationContext--common.xml","com/soma/conf/applicationContext-service-hr.xml" };
//啟動Spring,得到Spring環境上下文
ApplicationContext ctx = new (paths);
//在此類啟動時,將Spring環境上下文保存到單根類WebContextHolder中,以提供給其它的測試類使用
WebContextHolder.getInstence().setApplicationContext(ctx);
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Test
public void test(){
//必須要寫一個test空方法,否則SpringConfForTest類不會啟動
}
}
5 新建TestSuite類,類名為AllTests,類的內容如下所示:
package test;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import test.com.soma.domain.busilogic.hr.HrBusiLogicTest;
import test.com.soma.domain.service.hr.checkOverTimeDateTest;
@RunWith(Suite.class)
@Suite.SuiteClasses({
SpringConfForTest.class,
HrBusiLogicTest.class,
checkOverTimeDateTest.class
})
/**
* 批量執行Junit測試類,把類名寫入到上面的Suite.SuiteClasses({})中,用逗號分隔
*/
public class AllTests {
public static Test suite() {
TestSuite suite = new TestSuite("Test for test");
//$JUnit-BEGIN$
//$JUnit-END$
return suite;
}
}
注意:將SpringConfForTest.class放在第一個執行,以啟動Spring配置環境,把自己的TestCase類放到後面,用逗號分開。在測試時,只要執行這個TestSuite類就可以了。
6 寫自己的TestCase類,以CheckOverTimeDateTest.java為例子,文件內容如下:
public class CheckOverTimeDateTest {
private static HrTbovertimeManager hrTbovertimeManager;
private static ExcuteSqlDAO excuteSqlDAO;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
//從Spring上下文中得到hrTbovertimeManager介面類的實例
hrTbovertimeManager=(HrTbovertimeManager)BeanUtil.getBean("hrTbovertimeManager");
excuteSqlDAO = (ExcuteSqlDAO) BeanUtil.getBean("excuteSqlDAO");
}
@Test
public void testGetProjectList()throws Exception {
List<OvertimeDetailValue> overtimeDetailValueList = new ArrayList<OvertimeDetailValue>();
int index = 9;
for(int i = 1 ;i <= index;i++){
OvertimeDetailValue overtimeDetailValue = new OvertimeDetailValue();
overtimeDetailValue.setOtApplyDate("2009-05-0"+i);
overtimeDetailValueList.add(overtimeDetailValue);
}
String resultStr = hrTbovertimeManager.checkOverTimeDate(overtimeDetailValueList);
assertEquals("false", resultStr);
}
/**
* 導入2009-03月份出勤記錄excel文件,返回null表示導入成功,需要先刪除3月份的數據
*/
@Test
public void testSaveExcelDutyInformation() throws Exception{
// 在導入3月份出勤記錄前先刪除3月份的記錄,執行delete from hr_tbtyinformation;
excuteSqlDAO.excuteSql("delete from hr_tbtyinformation where tydate>='2009-02-26' and tydate<='2009-03-25'");
// System.out.println("----------"+System.getProperty("user.dir")+"/src/test/ty200903.xls");
String fileName = System.getProperty("user.dir")
+ "/src/test/ty200903.xls";
assertNull(hrTbtyInformationManager.saveExcelDutyInformation(fileName));
}
}
說明:BeanUtil.getBean("")相當於WebContextHolder.getInstence().getApplicationContext().getBean(""),只是對此方法做了封裝。
7 在Eclipse中,啟動AllTests,選擇「Run As JunitTest」,即可先啟動Spring環境,再依次運行你自己所寫的JunitTestCase,是不是很簡單哪?趕快動手試試吧。
B. 如何用junit4測試spring框架下配置的類
如何用Junit4測試Spring框架下配置的類
前幾天,我們在做Junit4的單元測試時,遇到了問題,就是Junit無法獲得spring的配置環境,即Junit無法得到Spring創建的類實例。
在查閱了網上的一些資料和同事的幫助下,成功的解決了此問題。步驟如下:
1 建立一個test的目錄,在此目錄下放置所有的JunitTestCase類和TestCase的配置文件
2 將項目中的Spring配置文件(默認名稱為applicationContext.xml)復制到test目錄下,並重新命名為JunitTestConf.xml。
3 根據Junit測試的需要修改JunitTestConf.xml文件中的內容,如資料庫連接等。
4 新建一個名為SpringConfForTest.java的類,在此類中配置Spring啟動所需的配置文件,並啟動Spring。此類的內容如下:
package test;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.;
import com.soma.global.WebContextHolder;
public class SpringConfForTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
//Spring啟動所需要的配置參數文件,其中test/JunitTestConf.xml文件中保存了資料庫連接等參數,可根據具體情況做修改
String[] paths = new String[] {"test/JunitTestConf.xml", "com/soma/conf/applicationContext--hr.xml","com/soma/conf/applicationContext-.xml","com/soma/conf/applicationContext--bug.xml","com/soma/conf/applicationContext--change.xml","com/soma/conf/applicationContext--common.xml","com/soma/conf/applicationContext-service-hr.xml" };
//啟動Spring,得到Spring環境上下文
ApplicationContext ctx = new (paths);
//在此類啟動時,將Spring環境上下文保存到單根類WebContextHolder中,以提供給其它的測試類使用
WebContextHolder.getInstence().setApplicationContext(ctx);
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Test
public void test(){
//必須要寫一個test空方法,否則SpringConfForTest類不會啟動
}
}
5 新建TestSuite類,類名為AllTests,類的內容如下所示:
package test;
import junit.framework.Test;
import junit.framework.TestSuite;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import test.com.soma.domain.busilogic.hr.HrBusiLogicTest;
import test.com.soma.domain.service.hr.checkOverTimeDateTest;
@RunWith(Suite.class)
@Suite.SuiteClasses({
SpringConfForTest.class,
HrBusiLogicTest.class,
checkOverTimeDateTest.class
})
/**
* 批量執行Junit測試類,把類名寫入到上面的Suite.SuiteClasses({})中,用逗號分隔
*/
public class AllTests {
public static Test suite() {
TestSuite suite = new TestSuite("Test for test");
//$JUnit-BEGIN$
//$JUnit-END$
return suite;
}
}
注意:將SpringConfForTest.class放在第一個執行,以啟動Spring配置環境,把自己的TestCase類放到後面,用逗號分開。在測試時,只要執行這個TestSuite類就可以了。
6 寫自己的TestCase類,以CheckOverTimeDateTest.java為例子,文件內容如下:
public class CheckOverTimeDateTest {
private static HrTbovertimeManager hrTbovertimeManager;
private static ExcuteSqlDAO excuteSqlDAO;
@BeforeClass
public static void setUpBeforeClass() throws Exception {
//從Spring上下文中得到hrTbovertimeManager介面類的實例
hrTbovertimeManager=(HrTbovertimeManager)BeanUtil.getBean("hrTbovertimeManager");
excuteSqlDAO = (ExcuteSqlDAO) BeanUtil.getBean("excuteSqlDAO");
}
@Test
public void testGetProjectList()throws Exception {
List<OvertimeDetailValue> overtimeDetailValueList = new ArrayList<OvertimeDetailValue>();
int index = 9;
for(int i = 1 ;i <= index;i++){
OvertimeDetailValue overtimeDetailValue = new OvertimeDetailValue();
overtimeDetailValue.setOtApplyDate("2009-05-0"+i);
overtimeDetailValueList.add(overtimeDetailValue);
}
String resultStr = hrTbovertimeManager.checkOverTimeDate(overtimeDetailValueList);
assertEquals("false", resultStr);
}
/**
* 導入2009-03月份出勤記錄excel文件,返回null表示導入成功,需要先刪除3月份的數據
*/
@Test
public void testSaveExcelDutyInformation() throws Exception{
// 在導入3月份出勤記錄前先刪除3月份的記錄,執行delete from hr_tbtyinformation;
excuteSqlDAO.excuteSql("delete from hr_tbtyinformation where tydate>='2009-02-26' and tydate<='2009-03-25'");
// System.out.println("----------"+System.getProperty("user.dir")+"/src/test/ty200903.xls");
String fileName = System.getProperty("user.dir")
+ "/src/test/ty200903.xls";
assertNull(hrTbtyInformationManager.saveExcelDutyInformation(fileName));
}
}
說明:BeanUtil.getBean("")相當於WebContextHolder.getInstence().getApplicationContext().getBean(""),只是對此方法做了封裝。
7 在Eclipse中,啟動AllTests,選擇「Run As JunitTest」,即可先啟動Spring環境,再依次運行你自己所寫的JunitTestCase,是不是很簡單哪?趕快動手試試吧。
轉載
C. 單元測試怎麼載入spring的配置文件
ApplicationContext獲取上下文。 (1)在java文件中:主要用於jUnit測試1導包:2importorg.springframework.context.ApplicationContext;3importorg.springframework.context.support.;4獲取bean:5ApplicationCo
D. junit測試,使用classpath和file 載入文件的區別
以前都是用classpath載入配置文件。
例如:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:spring--test.xml"})
public void TestA{
}
然後發現一直不能將介面注入到impl實現類中,其實本質原因還是配置文件沒有載入對。
一直在糾結中..............
然後又用
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"file:WEB-INFO/spring--test.xml"})
還是不對。
又用classpath*:/spring--test.xml 載入 。。。。還也不能載入。。。我也暈了,咋整都不行呢?
然後又在其他項目里發現測試用的是:file:/spring--test.xml;我就思考為什麼用file載入,而不是classpath去載入配置文件。
最終。。。。
file:載入非編譯類的文件系統,即:作為 URL 從文件系統中載入。
classpath:載入編譯的class文件系統,即:從classpath中載入。
由於我的配置文件是非編譯類配置文件。所以我選擇用file:載入配置文件。寫全配置文件的絕對路徑。
E. 如何用Junit測試讀取properties文件的類
1 建立一個test的目錄,在此目錄下放置所有的JunitTestCase類和TestCase的配置文件 2 將項目中的Spring配置文件(默認名稱為applicationContext.xml)復制到test目錄下,並重新命名為JunitTestConf.xml。 3 根據Junit測試的需要修改JunitTestConf....
F. java中Junit 測試中@ContextConfiguration里的配置
回答的什麼亂碼七糟的,測試類通常採用Junit測試,與tomcat無關,是兩個運行環境,因為你採用註解,這時候需要加入spring配置文件,在你的測試類上加入註解
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/springMVC.xml")
就可以了,當然,我這里用的是springMVC,註解配置也在這里。你更改下你的就OK
G. 怎樣載入多個Spring bean 配置文件
ApplicationContext獲取上下文。
(1)在java文件中:主要用於jUnit測試1導包:2importorg.springframework.context.ApplicationContext;3importorg.springframework.context.support.;4獲取bean:5ApplicationContext context =new("beans.xml");6UserDao userDao = (UserDao) context.getBean("userDao", UserDao.
在jsp文件中測試:1引用相關類:2<%@pageimport="org.springframework.web.context.WebApplicationContext"%3<%@pageimport="org.springframework.web.context.support.WebApplicationContextUtils"%4獲取bean:5WebApplicationContext wac = WebApplicationContextUtils.getWebApplicationContext(this
H. Junit4中,怎麼和Spring的依賴注入集成呢
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({
//這里寫Spring的配置文內件容
"classpath:conf-spring/spring-.xml",
"classpath:conf-spring/spring-service.xml",
"classpath:conf-spring/spring-controller.xml"})