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开 ...
随机推荐
- Mybatis传递参数的几种方式
使用Map传递 优点:直接在sql中取出key即可 缺点:适用于小项目,不符合大公司规范 对象传递参数 优点:符合标准规范 缺点:麻烦 3.只有一个基本类型参数的情况下,直接在sql中取中 4.多个参 ...
- 萌新看过来,你还学不懂VScode插件吗?
一.前言 VSCode是微软家一个非常轻量化的编辑器,体量虽轻,但是却有异常强大的功能.原因在于VSCode许多强大功能都是基于插件实现的,IDE只提供一个最基本的框架和基本功能,我们需要使用插件来丰 ...
- iscsi挂载
iscsi挂载 1.server端: (1) yum -y ...
- MySQL 数据库作发布系统的存储,一天五万条以上的增量, 预计运维三年,怎么优化?
1.设计良好的数据库结构,允许部分数据冗余,尽量避免 join 查询,提高效率. 2.选择合适的表字段数据类型和存储引擎,适当的添加索引. 3.MySQL 库主从读写分离. 4.找规律分表,减少单表中 ...
- Mybatis有哪些执行器?
Mybatis有三种基本的Executor执行器: SimpleExecutor.ReuseExecutor.BatchExecutor. SimpleExecutor:每执行一次 ...
- String、StringBuiler、StringBuffer的区别
一.三者的区别概述 1.可变与不可变:String底层使用final修饰的字符数组来存储字符串,它属于不可变类,对String对象的任何改变操作都不会改变原对象,而是生成一个新对象.StringBui ...
- spring aop 源码解读之我见
spring aop 都是动态代理,分为jdk代理和cglib代理.默认的情况下,如果类有实现了接口,使用jdk代理.如果没有实现接口,则使用cglib代理.在下面的代码中,我会标明对应的这段代码. ...
- 学习FastDfs(二)
分布式文件系统(DFS) 指文件系统管理的物理存储资源不一定直接连接在本地节点上 而是通过计算机网络与节点相连 分布式文件系统的设计基于客户机/服务器模式 一个典型的网络可能包括多个多个用户访问的服务 ...
- 『忘了再学』Shell基础 — 6、Bash基本功能(输入输出重定向)
目录 1.Bash的标准输入输出 2.输出重定向 (1)标准输出重定向 (2)标准错误输出重定向 (3)正确输出和错误输出同时保存 3.输入重定向 1.Bash的标准输入输出 我们前边一直在说,在Li ...
- 记一次 Nuxt 3 在 Windows 下的打包问题
0. 背景 之前用 Nuxt 3 写了公司的官网,包括了样式.字体图标.图片.视频等,其中样式和字体图标放在了 assets/styles 和 assets/fonts 目录下,而图片和视频则放在了 ...