开发流程之三(测试)

  纠结来纠结去,还是准备基于一个类写一个测试类。
  本测试类不基于之前的项目,本次是关于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);
    }
}

猜你喜欢

转载自blog.csdn.net/u010986518/article/details/80515808