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单元测试使用的更多相关文章

  1. Dynamic CRM插件调试与单元测试

    背景 使用Dynamic CRM平台开发完业务插件后,不可避免的就是进行插件调试,测试插件是否正常运行,网上关于Dynamic CRM的资料比较少,但对于调试的博客还是挺多的,足可见插件调试对于Dyn ...

  2. OpenAuth.Net.landv分支之旅开始制作CRM系统

    OpenAuth.Net.landv分支之旅开始制作CRM系统 这个事件的由来是因为没有一个统一的会员卡平台系统,目前需要连接三家酒店会员系统,由于三家酒店使用了三种酒店管理系统,彼此之间的耦合低.三 ...

  3. SpringBoot 构建RestFul API 含单元测试

    相关博文: 从消费者角度评估RestFul的意义 SpringBoot 构建RestFul API 含单元测试 首先,回顾并详细说明一下在快速入门中使用的  @Controller .  @RestC ...

  4. 利用windows server 2012 R2的Hyper-V搭建多个虚拟机的 Dynamics CRM 环境知识点小结

    一.需要掌握网络的知识,域真正的意义,防火墙等其他知识,这些知识我还需要加强,下面是我和同事的结果,不对的地方大家可以指出来,谢谢. 1.安装好的CRM2011环境,必须先打Update Rollup ...

  5. Intellij idea添加单元测试工具

    1.idea 版本是14.0.0 ,默认带有Junit,但是不能自动生成单元测试,需要下载JunitGererator2.0插件 2.Settings -Plugins,下载 JunitGenerat ...

  6. 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 数据库 ...

  7. Python的单元测试(二)

    title: Python的单元测试(二) date: 2015-03-04 19:08:20 categories: Python tags: [Python,单元测试] --- 在Python的单 ...

  8. Python的单元测试(一)

    title: Python的单元测试(一) author: 青南 date: 2015-02-27 22:50:47 categories: Python tags: [Python,单元测试] -- ...

  9. javascript单元测试框架mochajs详解

    关于单元测试的想法 对于一些比较重要的项目,每次更新代码之后总是要自己测好久,担心一旦上线出了问题影响的服务太多,此时就希望能有一个比较规范的测试流程.在github上看到牛逼的javascript开 ...

随机推荐

  1. SpringBoot学习入门之Hello项目的构建、单元测试和热部署等(配图文,配置信息详解,附案例源码)

    前言: 本文章主要是个人在学习SpringBoot框架时做的一些准备,参考老师讲解进行完善对SpringBoot构建简单项目的学习汇集成本篇文章,作为自己对SpringBoot框架的总结与笔记. 你将 ...

  2. GitLab 常用命令

    1. 进入本地仓库访问位置之后执行命令 1) 远程仓库相关命令检出仓库:$ git clone git://github.com/jquery/jquery.git查看远程仓库:$ git remot ...

  3. async-validator 源码学习笔记(三):rule

    系列文章: 1.async-validator 源码学习(一):文档翻译 2.async-validator 源码学习笔记(二):目录结构 rule 主要实现的是校验规则,文件结构为下图: 一.rul ...

  4. spring boot使用注解进行模糊查询

    spring boot中mybatis使用注解进行模糊查询@Select("select * from dept where dname like CONCAT('%',#{dname},' ...

  5. 使用阿里云镜像站NTP服务搭建NTP服务器(基于CentOS 7系统)

    镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 一.NTP服务器介绍 网络时间协议(Network Time Protocol,NTP)服务器,也就是日常所说的NTP服务器,用来提供同步时间服务 ...

  6. 使用Cobalt Strike来钓鱼(MS Office Macro)

    Cobalt Strike操作 点击Cobalt Strike主界面中attacks->packages->ms office macro 弹出界面选择Listener,单机确定 对话框中 ...

  7. Skye无人机刷Betaflight详细图文教程

    ​前言 首先十分感谢B站TASKBL up主的视频教程以及他的耐心指导,视频链接Skye 原机主板刷BetaFlight 参考教程_哔哩哔哩_bilibili.整个改造过程耗时三天,现把改造过程以及遇 ...

  8. 羽夏看Win系统内核——结语

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...

  9. 基于MRS-ClickHouse构建用户画像系统方案介绍

    业务场景 用户画像是对用户信息的标签化.用户画像系统通过对收集的各维度数据,进行深度的分析和挖掘,给不同的用户打上不同的标签,从而刻画出客户的全貌.通过用户画像系统,可以对各个用户进行精准定位,从而将 ...

  10. 数据库篇:mysql日志类型之 redo、undo、binlog

    前言 可以说mysql的多数特性都是围绕日志文件实现,而其中最重要的有以下三种 redo 日志 undo 日志 binlog 日志 关注公众号,一起交流:微信搜一搜: 潜行前行 1 redo日志 in ...