codingapi-test 单元测试框架

单元测试介绍

原文:https://www.codingapi.com/docs/codingapi-test/

通常单元测试要达到的效果:

  • 检验代码是否可以正常工作
  • 要达到业务层率覆盖率100%
  • 不依赖其他模块与数据可独立运行
  • 执行测试以后不允许产生脏数据影响业务
  • 要对业务产生的影响做检验确认

codingapi-test框架

框架基于Springboot2.x研发,可快速准备数据、校验数据、清理数据的测试工具。

使用codingapi-test框架的理由:

  • 方便快捷的准备测试数据
  • 自动化的校验
  • 自动化的清理数据
  • 兼容MongoDB、MySQL(关系型)

github:

https://github.com/codingapi/codingapi-test

maven:

<dependency>
      <groupId>com.codingapi</groupId>
      <artifactId>codingapi-test</artifactId>
      <version>0.0.1</version>
</dependency>

配置说明

@TestMethod提供了对单元测试辅助功能。
1、导入测试数据。
2、检查确认数据
3、数据清理

@Test
@TestMethod(
        //是否开启导入数据
        enablePrepare = true,
        //导入数据的文件 可以是数组
        prepareData = {"t_demo.xml"},
        //是否开启检查
        enableCheck = true,
        //检查数据项目
        checkMongoData ={
          //MongoDB数据检查
          @CheckMongoData(
                  //关键字质
                  primaryVal = "user:123",
                  //查询关键字
                  primaryKey = "info",
                  //关键值类型
                  type = CheckMongoData.Type.String,
                  //错误提示
                  desc = "数据不存在",
                  //加载类对象
                  bean = Logger.class,
                  //校验数据 key:字段,value:值,type:值类型
                  expected = @Expected(key = "id",value = "1",type = Expected.Type.Long))
        },
        checkMysqlData = {
           //Mysql 数据检查
           @CheckMysqlData(
                   //执行sql
                   sql = "select name from t_demo where name = '123'",
                   //错误提示
                   desc = "数据不存在",
                   //校验数据 key:字段,value:值,type:值类型
                   expected = @Expected(key = "name",value = "123",type = Expected.Type.String))
         },
        //开启清理          
        enableClear = true,
        //清理的MongoDB collection
        clearCollectionNames = {"logger"},
        //清理的db table
        clearTableNames = {"t_demo"}
)
public void login_success() {
    try {
        Long id  = demoService.login("123");
        log.info("login - > {}", id);
        Assert.isTrue(id==1 ,"login success .");
    } catch (UserNameNotFoundException exp) {
        exp.printStackTrace();
    }
}

t_demo.xml

<XmlInfo>
  <!--表名称 -->
  <name>t_demo</name>
  <!--插入语句自动创建的 -->
  <initCmd>insert into t_demo(id,name) values(#{id},#{name})</initCmd>
  <!--数据库类型 -->
  <dbType>Mysql</dbType>
  <!--entity所在类 -->
  <className>com.codingapi.cidemo.domain.Demo</className>
  <list>
    <!--数据 -->
    <list>
      <id>1</id>
      <name>123</name>
    </list>
    <list>
      <id>1</id>
      <name>123</name>
    </list>
  </list>
</XmlInfo>

mongo.xml

<XmlInfo>
  <!--collection名称 -->
  <name>logger</name>
  <!--暂不需要 -->
  <initCmd></initCmd>
  <!--数据库类型 -->
  <dbType>Mongo</dbType>
  <!--entity所在类 -->
  <className>com.codingapi.cidemo.collection.Logger</className>
  <list>
    <!--数据 -->
    <list>
      <id>1</id>
      <time>2</time>
      <info>3</info>
    </list>
    <list>
      <id>1</id>
      <time>2</time>
      <info>3</info>
    </list>
  </list>
</XmlInfo>

如何创建 数据模块xml

增加@XmlBuild 配置表名称和类型即可

@Data
@XmlBuild(name = "t_demo",dbType= DBType.Mysql)
public class Demo extends BaseVO {

    private Long id;

    private String name;

}

#xml创建模式 分为:创建并覆盖、增量、不添加
codingapi.test.mode=addition
#xml数据位置
codingapi.test.outPath=${user.dir}/xml

如何使用?

1、配置maven

<dependency>
      <groupId>com.codingapi</groupId>
      <artifactId>codingapi-test</artifactId>
      <version>0.0.1</version>
</dependency>

2、配置Test类

@RunWith(SpringRunner.class)
@SpringBootTest
// 单元测试的profile
@ActiveProfiles("test")
@Slf4j
// 增加监听
@TestExecutionListeners({JunitMethodListener.class,
        DependencyInjectionTestExecutionListener.class})
public class DemoServiceTest {

}

3、配置application文件

codingapi.test.mode=addition
codingapi.test.outPath=${user.dir}/xml

4、demo地址

https://github.com/1991wangliang/ci-demo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342