本篇内容只是本人简单的mark开发中常出现的一些疑问,方便后期项目使用时奠定基础,如果对Test零基础童鞋,欢迎查看Test官方的使用介绍:

https://help.salesforce.com/apex/HTViewHelpDoc?id=testing_your_code.htm&language=zh_CN

编写Test类基本步骤可以分成4步:

1.创建测试数据;

2.调用Test.startTest()方法;

3.调用需要测试的方法();

4.调用Test.stopTest()方法。

编写Test文档有以下几点需要注意:

1.Test代码的覆盖率应该超过75%,并且所有Test必须通过;

2.调用System.debug()方法不计入Test覆盖率一部分中;

3.Test类的方法不计入Test覆盖率部分;

4.每个Trigger必须有Test覆盖率;

5所有的类和Trigger必须编译成功。

几个主要的测试:

1.关于使用Test类模拟CreatedDate:Apex 中是不能修改 CreatedDate,但是如果我们在Test代码中依赖于它去做条件判断,比如需要获取到插入日期后几天的日期,可以使用下面的方式:

System.Test.setCreatedDate, 它可以在测试代码中修改数据的 CreatedDate,此方法只允许在Test方法中使用。

eg:

Account acc = new Account(name='testAccount');
insert acc;
Test.setCreatedDate(acc.Id, DateTime.newInstance(2016,5,9));

2.关于ApexPages.currentPage().getParameters().get('key')在Test中模拟的问题:初始化数据步骤时,在Test中先声明此页面的PageReference并将其使用Test.setCurrentPage引用,然后使用getParameters().put(key,value)方式注入进去,测试体便可以通过get(key)模拟传输功能。

 @isTest
private class TestPageReference {
static PageReference currentPage = Page.exportToExcelPage;//exportToExcelPage修改成你的Page页名称 static testMethod void myUnitTest() {
setParameterValue('testkey1','00001');
Test.startTest();
System.assertEquals('00001',getParameterValue('testkey1'));
System.debug('=============' + getParameterValue('testkey1'));
Test.stopTest();
} public static String getParameterValue(String key) {
Test.setCurrentPage(currentPage);
if(ApexPages.CurrentPage().getParameters().get(key) != null && ApexPages.CurrentPage().getParameters().get(key) != '') {
return ApexPages.CurrentPage().getParameters().get(key);
} else {
return '';
}
} public static void setParameterValue(String key,String value) {
Test.setCurrentPage(currentPage);
ApexPages.CurrentPage().getParameters().put(key,value);
}
}

3.Test WebService:https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_callouts_wsdl2apex_testing.htm

4.Test Http Callout:https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restful_http_testing.htm  

总结:本篇并没有讲述关于Test详细知识,只是针对项目中两个可能出现疑问的内容进行mark,如果Test零基础童鞋可以在Help文档中详细查看关于Apex的Test内容。如果本篇内容有错误的地方欢迎批评指正,有疑问的童鞋欢迎留言。

salesforce 零基础学习(二十二)Test简单使用的更多相关文章

  1. salesforce零基础学习(一百二十)快去迁移你的代码中的 Alert / Confirm 以及 Prompt吧

    本篇参考: https://developer.salesforce.com/blogs/2022/01/preparing-your-components-for-the-removal-of-al ...

  2. salesforce零基础学习(九十二)使用Ant Migration Tool 实现Metadata迁移

    我们在做项目时经常会使用changeset作为部署工具,但是某些场景使用changeset会比较难操作,比如当我们在sandbox将apex class更改名字想要部署到生产的org或者其他环境的or ...

  3. salesforce 零基础学习(十八)WorkFlow介绍及用法

    说起workflow大家肯定都不陌生,这里简单介绍一下salesforce中什么情况下使用workflow. 当你分配许多任务,定期发送电子邮件,记录修改时,可以通过自动配置workflow来完成以上 ...

  4. salesforce 零基础学习(十六)Validation Rules & Date/time

    上一篇介绍的内容为Formula,其中的Date/time部分未指出,此篇主要介绍Date/time部分以及Validation rules. 本篇参考PDF: Date/time:https://r ...

  5. salesforce 零基础学习(十九)Permission sets 讲解及设置

    Permission sets以及Profile是常见的设置访问权限的方式. Profile规则为'who see what'.通过Profile可以将一类的用户设置相同的访问权限.对于有着相同Pro ...

  6. salesforce 零基础学习(五十二)Trigger使用篇(二)

    第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...

  7. salesforce零基础学习(八十二)审批邮件获取最终审批人和审批意见

    项目中,审批操作无处不在.配置审批流时,我们有时候会用到queue,related user设置当前步骤的审批人,审批人可以一个或者多个.当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随 ...

  8. salesforce零基础学习(八十)使用autoComplete 输入内容自动联想结果以及去重实现

    项目中,我们有时候会需要实现自动联想功能,比如我们想输入用户或者联系人名称,去联想出系统中有的相关的用户和联系人,当点击以后获取相关的邮箱或者其他信息等等.这种情况下可以使用jquery ui中的au ...

  9. salesforce零基础学习(八十九)使用 input type=file 以及RemoteAction方式上传附件

    在classic环境中,salesforce提供了<apex:inputFile>标签用来实现附件的上传以及内容获取.salesforce 零基础学习(二十四)解析csv格式内容中有类似的 ...

  10. salesforce 零基础学习(六十八)http callout test class写法

    此篇可以参考: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restfu ...

随机推荐

  1. 基于VC的ACM音频编程接口压缩Wave音频(一)

    (一)概述 音频数据一般都具有较高的采样率,经过压缩的原始数据才具有实用价值,否则不仅要占用大量存储空间而且在播放或进行网络传输时效率也是非常低下的,所以音频数字压缩编码在多媒体应用中有着广泛而又重要 ...

  2. Debian 7 安装 wireshark

    安装过程很简单: $ sudo apt-get install wireshark 其中会弹出一个对话框: ┌─────────────────────┤ Configuring wireshark- ...

  3. 用python2.7,采集新浪博客

    #coding=utf-8 #新浪博客 import urllib import re import os url=['']*1500 #每一骗博客的地址 title=['']*1500 #每一篇博客 ...

  4. Windows phone8.1教务在线客户端

    本人是个大二学生,由于学校的教务在线一直没出windows phone的教务在线,而且本身也对wp开发感兴趣,所以就尝试着开发一下 由于没有系统的学习,只能在摸索中前进,这背后的原理很简单,可不容易实 ...

  5. 【图像处理】第三次实验:JPEG图像压缩

    1.任务说明 将LENA图像用JPEG方式压缩. 2.算法原理 JPEG(Joint Photographic Experts Group)是一个由ISO和IEC两个组织机构联合组成的一个专家组,负责 ...

  6. 使用VirtualBox自带管理工具命令为虚拟磁盘扩展空间

    VirtualBox虚拟磁盘空间不够了,默认10G.想扩大,图形界面下没有找到可操作菜单.Google了一下用 Vbox自带的命令工具VBoxManage即可解决. C:\Program Files\ ...

  7. [转]C语言指针学习经验总结浅谈

    指针是C语言的难点和重点,但指针也是C语言的灵魂 . 这篇C语言指针学习经验总结主要是我入职以来学习C指针过程中的点滴记录.文档里面就不重复书上说得很清楚的概念性东西,只把一些说得不清楚或理解起来比较 ...

  8. 关于IDW空间插值

    空间插值一般都会用到IInterPolationOP接口等 首先是通过图层的名称获取图层的方法: private ILayer GetLayerByName(string name)        { ...

  9. WTFPL 开源协议

    中文翻译: 你他妈的随便公共许可 版本2, 2004年12月 版权所有(C) 2004 Sam Hocevar <sam@hocevar.net> 每个人都允许复制和散布或修改本授权文件的 ...

  10. 【原创】WinForm 模态对话框

    今天解决的一个问题,记录下,以备后用. 问题描述:WinForm程序有超时自动退出功能,但是有些模态对话框不关掉的话会退出失败,原因(猜测): 程序倒计时用的System.Windows.Forms. ...