纠结来纠结去,还是准备基于一个类写一个测试类。
本测试类不基于之前的项目,本次是关于manager层的一个测试。假定我们的代码是关于一个订单Manager,我们要注意,一般manager是一个接口,TrainingOrderManager代码如下:
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import com.baozun.store.command.training.TrainingOrderCommand;
import com.baozun.store.model.training.TrainingOrder;
public interface TrainingOrderManager {
/** 新增培训订单 */
TrainingOrder saveTrainingOrder(TrainingOrderCommand orderCommand);
/** 修改培训订单 */
TrainingOrder updateTrainingOrderSkuMap(String code, Map<String, BigDecimal> skuMap);
/** 删除培训订单 */
void deleteTrainingOrder(String code);
/** 查询所有的培训订单 */
List<TrainingOrder> findAll();
/** 根据订单号查询培训订单 */
TrainingOrder findByCode(String code);
}
我再给出订单TrainingOrder类如下:
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;
public class TrainingOrder implements Serializable {
private static final long serialVersionUID = 4795856428159443515L;
/** ID */
private Long id;
/** 订单号 */
private String code;
/** 总金额 */
private BigDecimal totalAmout;
/** 付款时间 */
private Date paymentTime;
/** 购买人 */
private String buyer;
/** 商品列表 */
private Map<String, BigDecimal> skuMap;
public TrainingOrder() { }
public TrainingOrder(String code, Date paymentTime, String buyer) {
this.code = code;
this.paymentTime = paymentTime;
this.buyer = buyer;
}
public TrainingOrder(String code, Date paymentTime, String buyer, Map<String, BigDecimal> skuMap) {
this.code = code;
this.paymentTime = paymentTime;
this.buyer = buyer;
this.skuMap = skuMap;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public BigDecimal getTotalAmout() {
return totalAmout;
}
public void setTotalAmout(BigDecimal totalAmout) {
this.totalAmout = totalAmout;
}
public Date getPaymentTime() {
return paymentTime;
}
public void setPaymentTime(Date paymentTime) {
this.paymentTime = paymentTime;
}
public String getBuyer() {
return buyer;
}
public void setBuyer(String buyer) {
this.buyer = buyer;
}
public Map<String, BigDecimal> getSkuMap() {
return skuMap;
}
public void setSkuMap(Map<String, BigDecimal> skuMap) {
this.skuMap = skuMap;
}
@Override
public String toString(){
return "TrainingOrder [id=" + id + ", code=" + code + ", totalAmout=" + totalAmout + ", paymentTime=" + paymentTime + ", buyer=" + buyer + ", skuMap=" + skuMap + "]";
}
}
要完成Manager接口的四个方法的测试,我们该如何做?
这里也不绕弯,这里直接给TrainingOrderManagerTest1 的代码,后面跟着1死因为里面存在一个测试类,我们测试类继承了叫BaseTransactionalJUnit4SpringContextTests的基类:
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import com.alibaba.fastjson.JSON;
import com.baozun.nebula.BaseTransactionalJUnit4SpringContextTests;
import com.baozun.store.command.training.TrainingOrderCommand;
import com.baozun.store.model.training.TrainingOrder;
import com.baozun.store.web.training.manager.TrainingOrderManager;
public class TrainingOrderManagerTest1 extends BaseTransactionalJUnit4SpringContextTests{
private static final Logger LOGGER = LoggerFactory.getLogger(TrainingOrderManagerTest1.class);
@Autowired
private TrainingOrderManager trainingOrderManager;
/** testFindAll() 测试 */
@Test
public void testFindAll() {
LOGGER.debug("--------------testFindAll测试---------" + JSON.toJSONString(trainingOrderManager.findAll()));
}
/** testSaveTrainingOrder() 测试*/
@Test
public void testSaveTrainingOrder() {
String code = "12345";
Date paymentime = new Date(System.currentTimeMillis());
Map map = new HashMap<String, BigDecimal>();
map.put("11", new BigDecimal(1));
TrainingOrderCommand toc = new TrainingOrderCommand(code, paymentime, "zhangsan",map);
TrainingOrder tr = trainingOrderManager.saveTrainingOrder(toc);
LOGGER.info("-------------------------- testSaveTrainingOrder开始测试 --------------------------");
LOGGER.debug(" " + tr.toString());
LOGGER.info("-------------------------- testSaveTrainingOrder结束测试 --------------------------");
}
/** testUpdateTrainingOrderSkuMap() 测试*/
@Test
public void testUpdateTrainingOrderSkuMap() {
Map<String, BigDecimal> map = new HashMap<String, BigDecimal>();
map.put("sku2", new BigDecimal(1));
TrainingOrder train = trainingOrderManager.updateTrainingOrderSkuMap("1", map);
LOGGER.info("-------------------------- testUpdateTrainingOrderSkuMap开始测试 --------------------------");
LOGGER.debug("" + train.toString());
LOGGER.info("-------------------------- testUpdateTrainingOrderSkuMap结束测试 --------------------------");
}
/** testDeleteTrainingOrder() 测试*/
@Test
public void testDeleteTrainingOrder() {
String code = "1";
LOGGER.debug("----------------testDeleteTrainingOrder开始测试-------------");
trainingOrderManager.deleteTrainingOrder(code);
LOGGER.debug("----------------testDeleteTrainingOrder结束测试-------------");
}
}
基类BaseTransactionalJUnit4SpringContextTests的代码如下:
@ContextConfiguration(locations = { "自己的配置什么路径", })
@TransactionConfiguration(defaultRollback = false)
public class BaseTransactionalJUnit4SpringContextTests extends AbstractTransactionalJUnit4SpringContextTests{
static{
String value = "dev";
System.setProperty("spring.profiles.active", value);
ProfileConfigUtil.setMode(value);
}
}