Spring項目使用Junit4測試配置
阿新 • • 發佈:2019-01-29
run text1 junit file lba factory 文件中 ng- ext
我們經常要寫junit測試,在不啟動整個web項目的情況下,測試自己的service實現或者是dao實現,我們來充分利用下junit4的強大功能。
1.junit4的測試類
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.founder.mrp.domain.webservice.ErpProductXml;
import com.founder.mrp.domain.webservice.ErpTypeSetInfoXml;
import com.founder.mrp.service.webservice.ErpTypeSetProductService;
@RunWith(SpringJUnit4ClassRunner. class)
@ContextConfiguration(locations = {"classpath:spring-*.xml"})
public class JunitWebservice {
@Autowired
ErpTypeSetProductService erpTypeSetProductService;
@Test
@Rollback(false)
public void TestErpTypeSetInfoXml(){
List<ErpTypeSetInfoXml> erpTypeSetInfoXmlList = new ArrayList<ErpTypeSetInfoXml>();
ErpTypeSetInfoXml erpTypeSetInfoXml = new ErpTypeSetInfoXml();
erpTypeSetInfoXml.setAUFNR("1000021571");
erpTypeSetInfoXml.setZ_EDT_2000("ty00001");
erpTypeSetInfoXml.setZ_EDT_2002("試試書");
erpTypeSetInfoXml.setZ_EDT_2003("t00001");
erpTypeSetInfoXml.setZ_EDT_2008("1");
ErpTypeSetInfoXml erpTypeSetInfoXml2 = new ErpTypeSetInfoXml();
erpTypeSetInfoXml2.setAUFNR("1000021582");
erpTypeSetInfoXml2.setZ_EDT_2000("ty00002");
erpTypeSetInfoXml2.setZ_EDT_2002("測試計劃");
erpTypeSetInfoXml2.setZ_EDT_2003("t00002");
erpTypeSetInfoXml2.setZ_EDT_2008("1");
erpTypeSetInfoXmlList.add(erpTypeSetInfoXml);
erpTypeSetInfoXmlList.add(erpTypeSetInfoXml2);
erpTypeSetProductService.saveTypeSetInfo(erpTypeSetInfoXmlList);
}
@Test
@Rollback(false)
public void TestErpProductXml(){
List<ErpProductXml> erpProductXmlList = new ArrayList<ErpProductXml>();
ErpProductXml erpProductXml = new ErpProductXml();
erpProductXml.setAUFNR("5000022550");
erpProductXml.setZ_EDT_2000("pr00001");
erpProductXml.setZ_EDT_2001("神射手");
erpProductXml.setZ_PUB_5928("測試印刷廠");
erpProductXml.setZ_EDT_2003("p00001");
erpProductXml.setZ_PUB_5008("100");
ErpProductXml erpProductXml2 = new ErpProductXml();
erpProductXml2.setAUFNR("5000022551");
erpProductXml2.setZ_EDT_2000("pr00002");
erpProductXml2.setZ_EDT_2001("水電費科技");
erpProductXml2.setZ_PUB_5928("測試印刷廠");
erpProductXml2.setZ_EDT_2003("p00002");
erpProductXml2.setZ_PUB_5008("100");
erpProductXmlList.add(erpProductXml);
erpProductXmlList.add(erpProductXml2);
erpTypeSetProductService.saveErpProduct(erpProductXmlList);
}
}
2.解釋常用到的註解
@RunWith(SpringJUnit4ClassRunner.class)SpringJUnit支持,由此引入Spring-Test框架支持! @ContextConfiguration(locations = "classpath:applicationContext.xml") 多個配置文件的話可以用數組表示{“applicationContext.xml”,“applicationContext1.xml”}; @ContextConfiguration("/spring-context.xml")放在根路徑下(即類路徑下),然後<import resource="spring-dao.xml" />所有的配置文件和資源文件 @Transactional這個非常關鍵,如果不加入這個註解配置,事務控制就會完全失效! @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)這裏的事務關聯到配置文件中的事務控制器(transactionManager = "transactionManager"),
同時指定自動回滾(defaultRollback = true)。這樣做操作的數據才不會汙染數據庫! AbstractTransactionalDataSourceSpringContextTests要想構建這一系列的無汙染純綠色事務測試框架就必須找到這個基類!(即所有事務均不生效) @ActiveProfiles(value="dev")配置環境選擇
然後在方法上使用@Test,@RollBack,@Transaction等註解單獨修飾
Spring項目使用Junit4測試配置