• Jtester使用


    1、在Jtester中使用DataMap

    为什么要使用DataMap?

      早先的jTester中提供了dbFit方式来准备和验证数据库数据,应该来说,这个工具解决了很多问题。
    实际使用过程中,开发同学反映编辑和准备数据比较麻烦。数据操作错误需要在单独的html文件中才能
    查看到,也比较麻烦。 jTester从1.1.6开始推出了一种新的数据库数据准备和验证的方法 -- DataMap方
    式。DataMap对比DbFit有以下几个特性:
    • 准备数据和验证数据是在java代码中,无需额外的文件。
    • 因为只有java代码,数据编辑会更方便一些。
    • 验证数据库数据和jTester中其它断言方式一致,错误信息直接显示在测试方法上。
    • 只需要关注自己感兴趣的字段,无关的字段框架自动会帮忙填充。
    • 构造数据灵活,可以根据自己需要构造特定规则的数据。
    我们下面通过示例来简单的演示jTester是如何通过DataMap往数据库中插入数据和验证数据中已
    经存在的数据。

    例 4.1. 往数据库中插入一条数据

        

    db.table("tdd_user").clean().insert(new DataMap() {
    {
    this.put("id", "1");
    this.put("first_name", "darui.wu");
    this.put("my_date", new Date());
    }
    }).commit();

    DataMap(它是 LinkedHashMap<String, Object> 子类)是jTester中用于准备和验证数据的关键对
    象, 上面那段代码完成了4件事:
    • db.table("tdd_user")
      指定了插入数据的操作对象(表tdd_user),这条语句接下的操作都是针对表tdd_user的。
    • clean()
      清空表tdd_user中所有数据。
    • insert( ... )
      往表tdd_user中插入一条数据,其中id字段值为1,first_name字段值为
    darui.wu,my_date字段值为客户端的当前日期。
    • commit()
      提交前面删除数据操作和插入数据操作。
    运行上面那段简单的代码后,数据库中数据状态应该如下:

    配置jtester.properties文件
    要在jTester矿建下进行数据库的相关的测试,必须在测试代码的classpath根路径下放置一个jtester.properties文件。并在该文件中配置相应的数据源。

     在classpath根路径下建好jtester.properties文件后,需要配置下面选项的值。
    • database.type
    数据库类型,目前支持mysql,oracle两种
    • database.url
    数据库连接url,比如jdbc:mysql://localhost/presentationtdd?
    characterEncoding=UTF8
    • database.userName
    连接数据库的用户名
    • database.password
    用户密码
    • database.schemaNames
    数据库的具体schema
    • database.driverClassName
    数据库连接驱动class的全称

    为了方便大家理解,下面分别给一个mysql配置示例和一个oracle配置示例

    例 4.3. mysql配置示例 

    database.type=mysql
    database.url=jdbc:mysql://localhost/presentationtdd?characterEncoding=UTF8
    database.userName=root
    database.password=password
    database.schemaNames=presentationtdd
    database.driverClassName=com.mysql.jdbc.Driver
    

     例 4.4. oracle配置示例          

    database.type=oracle
    database.url=jdbc:oracle:thin:@localhost:1521:crmp?args[applicationEncoding=UTF-8,databaseEncoding=UTF-8]
    database.userName=root
    database.schemaNames=test
    database.password=xxxx
    database.driverClassName=com.alibaba.china.jdbc.SimpleDriver

    验证数据库中数据总数:

    1 db.table("tdd_user").count.eq(1);

    验证数据库中的数据:

    1 db.table("tdd_user").query().propertyEqMap(newDataMap() {
    2 {
    3 this.put("id", 1);
    4 this.put("first_name", "wu");
    5 this.put("last_name", "json");
    6 }
    7 });

     带条件的数据查询验证:

    db.table("tdd_user").queryWhere("post_code=310012").propertyEqMap(2, newDataMap() {
    {
    this.put("id", 1, 2);
    this.put("first_name", "darui.wu", "data.iterator");
    this.put("address_id", 0);
    this.put("sarary", 0.0);
    }
    }, EqMode.IGNORE_ORDER);

    2、在Jtester中使用Mock

     new MockUp<ResourceFacility>(){
                @Mock
                public List<NoahResourceModel> getNoahResourceByResType(String resType){
                    List<NoahResourceModel> rs = new ArrayList<NoahResourceModel>();
                    NoahResourceModel r= new NoahResourceModel();
                    r.setName("customer_key_1");
                    r.setValue("qt_key_1");
                    rs.add(r);
                    
                    r= new NoahResourceModel();
                    r.setName("customer_key_2");
                    r.setValue("qt_key_2");
                    rs.add(r);
                    return rs;
                }
            };

     3、测试分组

    1、将某个测试方法归为某个测试分组

    @Test(groups={"tests.find"})
    public class FindServiceTest extends AegeanDomainBaseTest{
       @Test
       public void testGroup(){
    
        }       
    }
  • 相关阅读:
    jetty插件配置
    连接Oracle时ORA-12541 TNS 无监听程序
    查看表结构
    判断时间差,返回1或2或3
    template_共享模板
    template_showpost
    template_homepage
    tensorflow解决Fizz Buzz 的问题
    神经网络——项目二CNN手写数字识别
    神经网络——项目一 手写数字识别
  • 原文地址:https://www.cnblogs.com/xuelu/p/3723172.html
Copyright © 2020-2023  润新知