美文网首页
SpringBoot 使用Junit单元测试的时候插入数据,单元

SpringBoot 使用Junit单元测试的时候插入数据,单元

作者: lclandld | 来源:发表于2021-03-03 15:54 被阅读0次
image.png

1、Junit测试原理

springboot中使用junit编写单元测试默认是事物回滚的,这样测试的脏数据不影响数据库,即实际上是执行了对应的插入操作,但是完成操作后执行了事务回滚操作,从而数据库中没有对应数据。

2、关闭自动事务回滚

在对应的测试方法上添加@Rollback(false)关闭回滚。

3、记录自己的一些关于单元测试的操作步骤

  • 新建单元测试类(选择要新建的测试类或者方法,快捷键Ctr+Shift+T),选择新建测试


    image.png
  • 我选择的是JUnit4


    image.png
  • 因为有一些初始之前的用户信息需要使用,所以选上Generate的setUp/@Before


    image.png
  • 生成出来的单元测试类差不多就这样子来


    image.png
  • 在测试类上加上一些注解

@Slf4j
@SpringBootTest(classes = com.bimstudy.TenantApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@Transactional
@RunWith(SpringRunner.class)
public class IStudyStepServiceTest {

    @Before
    public void setUp() throws Exception {
    }

    @Test
    public void saveLocal() {
    }

    @Test
    public void getStepByLineId() {
    }
}

注意:@Transactional如果要插入数据到数据库的话必须加上

  • 单元测试之前需要用到的用户信息
   @Autowired
    IStudyLineService studyLineService;
    @Before
    public void setUp() throws Exception {
        RequestContextListener listener = new RequestContextListener();
        MockServletContext context = new MockServletContext();
        MockHttpServletRequest request = new MockHttpServletRequest(context);
        request.setAttribute("currentUser", User.builder()
                .id(1141604025922449410L)
                .userName("testTenant")
                .mobile("13666666666")
                .tenantId(1141600554917781506L)
                .build());
        listener.requestInitialized(new ServletRequestEvent(context, request));
    }
  • 我遇到问题的主题,单元测试跑通了,但是数据库中没数据@Rollback(false)
  /**
     * 学习路线-基础信息
     */
    @Test
    @Rollback(false)
    public void saveLineLocal() {
        StudyLineBaseSaveVO studyLineBaseSaveVO = StudyLineBaseSaveVO.builder()
                .days(3).name("lclc路线1").remark("ddddddddddd")
                .build();
        studyLineService.saveLineBasicInfo(studyLineBaseSaveVO);
    }

相关文章

网友评论

      本文标题:SpringBoot 使用Junit单元测试的时候插入数据,单元

      本文链接:https://www.haomeiwen.com/subject/dlgqqltx.html