欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

springboot~让我习惯了TDD的开发模式

程序员文章站 2024-01-26 22:28:22
TDD是什么 TDD就是测试驱动开发,以测试用例为主导,去开发项目,业务代码该怎么写还是怎么写,在实现UI之前,可以先实现Test用例,通过test来实现对业务场景的模拟,最终让你的代码更稳定。 大叔认为tdd的作用 1. 代码更稳定,bug在发布之前被暴露出来 2. 持续集成更需要它,当你的项目通 ......

tdd是什么

tdd就是测试驱动开发,以测试用例为主导,去开发项目,业务代码该怎么写还是怎么写,在实现ui之前,可以先实现test用例,通过test来实现对业务场景的模拟,最终让你的代码更稳定。

大叔认为tdd的作用

  1. 代码更稳定,bug在发布之前被暴露出来
  2. 持续集成更需要它,当你的项目通过tdd之后,就可以通过自动化工具发布了,这最起码保证了代码是没有问题的
  3. 核心模块更稳定,当你的核心模块修改或者添加新功能后,你需要写测试用例来保存你我修改和添加的模型是正确的,最起码保证了它没有修改其它的功能,因为你的代码可能被多个模块引用,而每个模块都有自己的测试用例,所以,核心模块修改后,需要为它做测试。

项目与测试项目是统一的

在springboot框架里,我们在建立一个项目后,会同时建立一个测试项目,大叔觉得,这是一个很好的设计和习惯,对于.net开发人员来说,也应该这样,在建立一个项目后,同时也写一下它的单元测试!

mongodb模块的测试

public class mongodbtest {
  @autowired
  mongotemplate mongotemplate;

  @test
  public void add() {
    list<taxamountconfig.amountconfig> amountconfigs = immutablelist.of(
        taxamountconfig.amountconfig.builder()
            .rate(1)
            .thresholdmax(5000)
            .thresholdmin(3000)
            .value(10)
            .build()
    );
    taxamountconfig taxamountconfig = taxamountconfig.builder()
        .base(3000)
        .accountperiod(yearmonth.of(2017, 5))
        .amountconfigs(amountconfigs)
        .build();
    mongotemplate.insert(taxamountconfig);
  }
}

测试时带有环境属性

你的测试代码完全可以指定一种环境,如开发,生产,测试等,对哪个环境有效,可以通过@profile来实现

@configuration
@profile("integtest")
public class mockclienttest {
  @bean
  public mockclient mockclient() {
    mockclient client = mock(mockclient.class);
    when(client.balancesheet(
        anystring()))
        .thenreturn("ok");
    return client;
  }
}