Spring项目构建单元测试

闲聊:最近线上的项目其中某个逻辑中途改了个sql,没有测试就急急忙忙提交了,结果上线后就悲剧了,参数没传进去,无奈,版本回退大哭(就规范性来说,自测时一定要写测试用例单独测试持久层方法和业务逻辑流转)

准备工作,pom中引入依赖,我的sprig version是4.0.0.RELEASE
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <!--<scope>test</scope>-->
</dependency>
首先,在正规的项目目录中,我们建立项目目录一般会建立一个和java平级的test的目录,test目录里面也是和普通的包级分类一样,分包写测试用例,并把test目录作为Test Sources Root使用

一般来说,平时开发或项目中间临时改动了持久层都是要经过测试的,所以单元测试也极其重要(规范做法)

Junit常用注解:
@BeforeClass 全局初始化加载一次(仅一次);
@Berore 在标注有@Test的测试方法之前运行;
@Test 需要测试的方法;
@After 在测试方法之后执行;
@AfterClass  全局最后一个执行的方法;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:applicationContext.xml"})
@TransactionConfiguration(transactionManager = "transactionManager",defaultRollback = true)
public class CartServiceTest {

    @Autowired
    private CartMapper cartMapper;

    @Autowired
    private CartService cartService;

    @Test
    public void testCartService(){
        Cart cart = cartMapper.selectByPrimaryKey(126);
        assert cart != null;
    }

}
1、@Runnwith后面跟的是单元测试运行器指定的执行类,例如JUnit.class、Suite.class,我们一般是spring环境,所以使用SpringJUnit4ClassRunner.class 让测试运行于spring环境,方便测试持久层;

2、@ContextConfiguration指定spring配置文件路径,支持多个,@ContextConfiguration(locations={"classpath:spring1.xml","classpath:spring2.xml"})

3、@TransactionConfiguraton(transactionManager="transactionManager",defaultRollback=true)表示关联配置文件中事务控制器,同时defaultRollback=true回滚为true

4、@Transactional开启事务注解,我试了同时使用@Transactional和@TransactionConfiguraton时,defaultRollback必须=true才会使操作回滚、事务生效,但是如果我仅使用@Transactional而不使用@TransactionConfiguraton注解,事务也会生效

5、如果待测试的service层中自己就已经包含了@Transactional那会是什么情况呢?测试后发现这种情况和测试类中使用@Transactional效果是一致的,都能回滚 

注:
1、@Test标注的测试方法无返回值、无入参,
2、@Test测试方法不能为static修饰、只能为public void ××().
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值