salesforce 零基础学习(二十二)Test简单使用
本篇内容只是本人简单的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简单使用的更多相关文章
- salesforce零基础学习(一百二十)快去迁移你的代码中的 Alert / Confirm 以及 Prompt吧
本篇参考: https://developer.salesforce.com/blogs/2022/01/preparing-your-components-for-the-removal-of-al ...
- salesforce零基础学习(九十二)使用Ant Migration Tool 实现Metadata迁移
我们在做项目时经常会使用changeset作为部署工具,但是某些场景使用changeset会比较难操作,比如当我们在sandbox将apex class更改名字想要部署到生产的org或者其他环境的or ...
- salesforce 零基础学习(十八)WorkFlow介绍及用法
说起workflow大家肯定都不陌生,这里简单介绍一下salesforce中什么情况下使用workflow. 当你分配许多任务,定期发送电子邮件,记录修改时,可以通过自动配置workflow来完成以上 ...
- salesforce 零基础学习(十六)Validation Rules & Date/time
上一篇介绍的内容为Formula,其中的Date/time部分未指出,此篇主要介绍Date/time部分以及Validation rules. 本篇参考PDF: Date/time:https://r ...
- salesforce 零基础学习(十九)Permission sets 讲解及设置
Permission sets以及Profile是常见的设置访问权限的方式. Profile规则为'who see what'.通过Profile可以将一类的用户设置相同的访问权限.对于有着相同Pro ...
- salesforce 零基础学习(五十二)Trigger使用篇(二)
第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...
- salesforce零基础学习(八十二)审批邮件获取最终审批人和审批意见
项目中,审批操作无处不在.配置审批流时,我们有时候会用到queue,related user设置当前步骤的审批人,审批人可以一个或者多个.当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随 ...
- salesforce零基础学习(八十)使用autoComplete 输入内容自动联想结果以及去重实现
项目中,我们有时候会需要实现自动联想功能,比如我们想输入用户或者联系人名称,去联想出系统中有的相关的用户和联系人,当点击以后获取相关的邮箱或者其他信息等等.这种情况下可以使用jquery ui中的au ...
- salesforce零基础学习(八十九)使用 input type=file 以及RemoteAction方式上传附件
在classic环境中,salesforce提供了<apex:inputFile>标签用来实现附件的上传以及内容获取.salesforce 零基础学习(二十四)解析csv格式内容中有类似的 ...
- salesforce 零基础学习(六十八)http callout test class写法
此篇可以参考: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restfu ...
随机推荐
- 亲测——pycharm下运行第一个scrapy项目 ©seven_clear
最近在学习scrapy,就想着用pycharm调试,但不知道怎么弄,从网上搜了很多方法,这里总结一个我试成功了的. 首先当然是安装scrapy,安装教程什么的网上一大堆,这里推荐一个详细的:http: ...
- Swift基础语法(五)枚举、结构体与类的区别
swift中的结构体值可以是整型.浮点型.字符串.字符.元祖,如果不赋值默认为整型且从0开始计数,如果为整型枚举且要求不是从0开始只需指定枚举的第一个值以后的值自动依次加1 引用方式也与oc有所出入 ...
- UI进阶
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- 使用Fragment的两种方式:<fragment>与<FrameLayout>
Android中使用Fragment的两种方式:<fragment>与<FrameLayout> 1.静态使用:自定义类,继承Fragment,在xml中使用<fragm ...
- Windows 自动关机/定时关机 命令 shuntdown
一 .倒计时关机: 指定系统在10分钟后自动关闭:点击"开始→运行",输入命令"Shutdown -s -t 60"(注意:引号不输入,参数之间有空格 ...
- oracle表空间不足时的处理方法
由于数据文件路径下的空间不足或表空间不足时,需要更换或扩展或新增表空间时,以下简单介绍下几种处理方式(数据文件/opt/oracle/oradata/testdb.dbf,原大小为100M) 一.扩大 ...
- GDB调试精粹及使用实例(转)
一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符 ...
- 使用Vs2012开发Metro时在另一台win8平板上调试的步骤
需求:开发一个metro应用,因为要给平面设计师参谋, 需要将软件安装在win8平板上. 环境:开发机是win8, win8平板是win8.1rtm , 是用老的win7平板改装的. 步骤: 1:拷 ...
- unity 实现简单的分离
在网上随便搜一搜资料就可以找到很多关于Mvc ,MVVM,StrangeIoc等有关显示与数据分离的博客,很多大神也是讲的蛮有道理的,但是这些框架理解起来有一定的难度, 这时候肯定有人说有现成的框架为 ...
- segmentControl实现控制器的切换
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launc ...