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. 2022年官网下安装Redis最全版与官网查阅方法

    目录 安装部署Redis 一.下载安装 1.百度搜索Redis,双击进入. 2.下载稳定版(服务器版本),如图所示 3.找到下载的位置,解压压缩包(查看发现不是windows版本) 4.官网没有win ...

  2. # Redhat7 安装 yum源

    第一步:先卸载原来的yum rpm -qa |grep yum 查看原来是否安装 yum-3.4.3-118.el7.noarch yum-utils-1.1.31-24.el7.noarch yum ...

  3. 74CMS 3.0 CSRF漏洞

    一. 启动环境 1.双击运行桌面phpstudy.exe软件 2.点击启动按钮,启动服务器环境 二.代码审计 1.双击启动桌面Seay源代码审计系统软件 2.因为74CMS3.0源代码编辑使用GBK编 ...

  4. JavaScript 函数 (一 JavaScript 函数的声明与使用)

    函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. JavaScript 函数的声明与使用 实例 <!DOCTYPE html> <html> <head> ...

  5. synchronized 与 lock锁的异同

    相同点: 二者都可以解决线程安全问题: 不同点: 1..Synchronized 是Java内置的关键字:Lock是一个Java类: 2.Synchronized 无法判断锁的状态:Lock可以判断是 ...

  6. K8S原来如此简单(八)ServiceAccount+RBAC

    ServiceAccount ServiceAccount是给运行在Pod的程序使用的身份认证,Pod容器的进程需要访问API Server时用的就是ServiceAccount账户. Service ...

  7. [NPUCTF2020]Baby Obfuscation wp

    整体观察main函数,可以发现用户自定义函数和变量存在混淆,猜测为函数名及变量名asc混淆. 对函数进行分析: Fox1为欧几里得算法求最大公约数 Fox5其实是pow Fox4根据逻辑数学的法则实际 ...

  8. elasticsearch 索引数据多了怎么办,如何调优,部署 ?

    面试官:想了解大数据量的运维能力. 解答:索引数据的规划,应在前期做好规划,正所谓"设计先行,编码在后", 这样才能有效的避免突如其来的数据激增导致集群处理能力不足引发的线上客户 ...

  9. NO Oracle database,JUST USE Oracle client。远程导入导出dmp

    序言: 你会发现,exp.exe 和imp.exe均存在于Oracle数据库的安装bin目录下.而很多情况下,我们不想安装庞大的Oracle数据库,但想使用imp和exp等工具命令,在我们本地机对Or ...

  10. Mycat新增数据报错can't fetch sequnce in db,sequnce

    Mycat报错 2021-11-08 17:13:01,310 [ERROR][Thread-1] MyCATSequenceProcessor.executeSeq(SesionSQLPair) j ...