crm单元测试使用
Action使用
使用paramBag传递入参,填写入参名,入参值,后使用 serviceProvider传入插件。
Assert.AreEqual(this.output["state"].ToString(), "success", "执行失败");
断言AreEqual("条件","结果","成功","失败");
- /// <summary>
- /// 执行其他环境
- /// </summary>
- public PluginTest() : base(EnvironmentType.DEV) { }
- [TestMethod]
- [Description("模拟测试Action")]
- public void PluginTemplateTest1()
- {
- var paramBag = new Dictionary<string, object>();
- paramBag.Add("inputPara1", "1000001");
- paramBag.Add("inputPara2", "parameter");
- var serviceProvider = ConstructServiceProvider(paramBag);
- //引用插件DLL,执行单元测试
- //PluginTemplate test = new PluginTemplate("", "");
- //test.Execute(serviceProvider);
- Assert.AreEqual(this.output["state"].ToString(), "success", "执行失败");
- }
使用单元测试需要在“C:\CRMConfig”目录下增加“Vyung.Xrm.config”文件并配置
- <crmConfig>
- <add key="CRMDEVConnectionString" value="Url=url.com; Domain=域名; Username=账户名; Password=密码; AuthType=连接方式" />
- </crmConfig>
key默认为“CRMConnectionString”,需要在增加DEV,
Plugin使用
对比Action,Plugin中增加了前后镜像的传递和操作的模拟,以及模拟当前操作人
镜像传递与入参相同
操作使用base执行插件中的操作,及镜像前后的参数
RegisterUserId填写操作人id模拟使用者
使用try catch捕获操作问题,执行判断
- [TestMethod]
- [Description("模拟测试Plugin")]
- public void PluginTemplateTest2()
- {
- /* 当前模拟更新后操作,界面执行提交操作new_status改成30,
- * 插件已注册前后镜像 */
- var paramBag = new Dictionary<string, object>();
- var id = Guid.Parse("当前单据ID");
- //模拟前镜像 后镜像
- var preImage = serviceProxy.Retrieve("account", id, new ColumnSet(true));
- var postImage = serviceProxy.Retrieve("account", id, new ColumnSet(true));
- postImage["new_status"] = new OptionSetValue(30);
- //模拟Target操作
- var target = new Entity("account", id);
- target["new_status"] = new OptionSetValue(30);
- paramBag.Add("Target", target);
- //模拟插件操作
- base.RegisterSteps(MsgType.Update, 40);
- base.RegisterPreImage(preImage);
- base.RegisterPostImage(postImage);
- //模拟当前操作人context.userid.
- //不使用此方法默认当前代理用户权限.
- base.RegisterUserId("操作人Guid");
- var serviceProvider = ConstructServiceProvider(paramBag);
- //引用插件DLL,执行单元测试
- //PluginTemplate test = new PluginTemplate("", "");
- //test.Execute(serviceProvider);
- }
Plugin和Action在使用前,要使用用单元测试将预想场景模拟成功,捕获预想错误,才能注册
Console一样,执行成功后再部署
Console使用
与控制台中的Program类似,选择执行的程序后运行
添加执行日志,使用try catch捕获问题
- [TestMethod]
- public void TaskTemplateTest()
- {
- //"TaskTemplate":任务名称, "para01":参数值,"para02":参数值
- string[] args = new string[] { "TaskTemplate", "para01", "para02" };
- TaskContext taskContext = new TaskContext();
- string taskCode = args[0];
- try
- {
- List<string> cmdarg = new List<string>();
- if (args.Length > 1)
- {
- cmdarg.AddRange(args.Skip<string>(1));
- }
- ConfigFactory config = new ConfigFactory(ConfigurationManager.AppSettings["xrmConfig"].ToString());
- taskContext.Args = args;
- taskContext.CrmService = new CrmServiceClient(config.GetCRMConnectionString());
- taskContext.DbConnection = new SqlConnection(config.GetDBConnectionString());
- //taskContext.Logger = new FileLogger(config.GetNLogPath());//配置文件Log
- //执行任务
- //taskContext.Logger.ConsoleInfo($"{taskCode}程序启动时间:{DateTime.Now.ToString() }");
- //引用控制台DLL,执行单元测试
- //ITask taskName = TaskFactory.CreatTaks(taskCode);
- //taskName.Execute(taskContext);
- // taskContext.Logger.ConsoleInfo($"{taskCode}程序结束时间:{DateTime.Now.ToString() }");
- }
- catch (FaultException<OrganizationServiceFault> ex)
- {
- // taskContext.Logger.ConsoleError($"{taskCode}程序运行失败:Message:{ex.Message}", ex);
- throw;
- }
- }
crm单元测试使用的更多相关文章
- Dynamic CRM插件调试与单元测试
背景 使用Dynamic CRM平台开发完业务插件后,不可避免的就是进行插件调试,测试插件是否正常运行,网上关于Dynamic CRM的资料比较少,但对于调试的博客还是挺多的,足可见插件调试对于Dyn ...
- OpenAuth.Net.landv分支之旅开始制作CRM系统
OpenAuth.Net.landv分支之旅开始制作CRM系统 这个事件的由来是因为没有一个统一的会员卡平台系统,目前需要连接三家酒店会员系统,由于三家酒店使用了三种酒店管理系统,彼此之间的耦合低.三 ...
- SpringBoot 构建RestFul API 含单元测试
相关博文: 从消费者角度评估RestFul的意义 SpringBoot 构建RestFul API 含单元测试 首先,回顾并详细说明一下在快速入门中使用的 @Controller . @RestC ...
- 利用windows server 2012 R2的Hyper-V搭建多个虚拟机的 Dynamics CRM 环境知识点小结
一.需要掌握网络的知识,域真正的意义,防火墙等其他知识,这些知识我还需要加强,下面是我和同事的结果,不对的地方大家可以指出来,谢谢. 1.安装好的CRM2011环境,必须先打Update Rollup ...
- Intellij idea添加单元测试工具
1.idea 版本是14.0.0 ,默认带有Junit,但是不能自动生成单元测试,需要下载JunitGererator2.0插件 2.Settings -Plugins,下载 JunitGenerat ...
- Enterprise Solution 3.1 企业应用开发框架 .NET ERP/CRM/MIS 开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms
行业:基于数据库的制造行业管理软件,包含ERP.MRP.CRM.MIS.MES等企业管理软件 数据库平台:SQL Server 2005或以上 系统架构:C/S 开发技术 序号 领域 技术 1 数据库 ...
- Python的单元测试(二)
title: Python的单元测试(二) date: 2015-03-04 19:08:20 categories: Python tags: [Python,单元测试] --- 在Python的单 ...
- Python的单元测试(一)
title: Python的单元测试(一) author: 青南 date: 2015-02-27 22:50:47 categories: Python tags: [Python,单元测试] -- ...
- javascript单元测试框架mochajs详解
关于单元测试的想法 对于一些比较重要的项目,每次更新代码之后总是要自己测好久,担心一旦上线出了问题影响的服务太多,此时就希望能有一个比较规范的测试流程.在github上看到牛逼的javascript开 ...
随机推荐
- 编译OneAPI(支持Nvidia显卡)
开始使用DPC++ 官方安装教程 预备条件 请确保当前开发环境满足如下条件: git cmake版本需要满足3.14及以上. python版本3.6以上的python. nijia版本1.8及以上(使 ...
- LGP5142题解
题意简明,不说了( 因为教练让同学们做线段树的题,早就会了线段树的我就来爆踩水水蓝了/kk 首先推一下柿子: \[\frac 1 n\sum_{i=1}^n(a_i^2-2 \times a_i \t ...
- windows 2008 R2磁盘清理
记录一次由于磁盘空间满,IIS使前端程序报500的事故 由于导出Api部署在IIS服务器,在程序调用导出Api会报500 发现windows服务器C盘已满 下面处理过程 只需复制cleanmgr.ex ...
- web自动化之定位
UI自动化必不可少的操作--元素定位 8大基础定位 driver.find_element_by_id() # id定位 driver.find_element_by_name() # name定位 ...
- HTTPS-各种加密方式
推荐阅读:https://www.cnblogs.com/zwtblog/tag/计算机网络/ 目录 HTTPS 对称加密(AES) 非对称加密(RSA) 工作过程 分析 优缺点 常用算法 混合加密 ...
- TreeMap与TreeSet的源码分析
1.TreeMap源码 1.属性部分: private final Comparator<? super K> comparator;//比较器 private transient Ent ...
- 为什么要使用 rabbitmq?
(1)在分布式系统下具备异步,削峰,负载均衡等一系列高级功能; (2)拥有持久化的机制,进程消息,队列中的信息也可以保存下来. (3)实现消费者和生产者之间的解耦. (4)对于高并发场景下,利用消息队 ...
- Oracle入门基础(七)一一集合运算
SQL> /* SQL> 查询10和20号部门的员工 SQL> 1. select * from emp where deptno=10 or deptno=20; SQL> ...
- ConcurrentHashMap 的并发度是什么 ?
ConcurrentHashMap 的并发度就是 segment 的大小,默认为 16,这意味着最多同时可以有 16 条线程操作 ConcurrentHashMap,这也是ConcurrentHash ...
- 在虚拟机里面安装mysql
https://dev.mysql.com/downloads/repo/yum/ 首先到网站里面下载 mysql80-community-release-el7-3.noarch.rpm 通过xft ...