CRM Online 2011 集成测试在生产环境中运行

2024-04-21

我正在为 Dynamics CRM 编写一些代码Online 2011.

我想要运行一组集成测试inCRM Online 并能够检查:

  • 一些日志输出
  • 断言失败

Under 的控制我本地机器上的测试运行程序。

现在,我正在做:

var passes = new List<string>();
var fails = new List<Tuple<string,Exception>>();
foreach(Action<StringWriter> testAction in EnumTests())
{
    var log = stringWriter();
    try 
    {
        testAction(log);
        passes.Add(log.ToString());
    }
    catch(Exception e)
    {
        fails.Add(log.ToString(),e);
    }
}

throw new Exception( "PASSES: " + string.Join("======", passes.ToArray()) 
    + "FAILS: " + string.Join("=======",fails.Select(f=>f.ToString()).ToArray());

我通过连接到 Contact Create 的插件操作触发此代码:

  1. 上传插件
  2. 创建联系人
  3. hit save
  4. 下载异常数据文件

必须有更好的方法,但我根本无法在文档、博客或论坛中找到任何参考来通过测试触发插件代码(并获取异常输出)。

我希望能够调用插件中的方法,然后将包括完整堆栈跟踪和日志输出在内的结果返回到 xUnit 测试的上下文中。

那可能吗?其他人也做过类似的事情吗?当然,并非所有 CRM 2011 开发人员都陷入了鼠标环的困境中?


注意,我对本地调试不感兴趣,并且理想情况下不希望将结果存储到定制实体中。我知道我可以对页面进行屏幕抓取,但我希望有某种方法可以进行相当于网络服务调用的操作。或者有人有一个很好的框架,可以简单地完成这一切(或者我可以调整)。

编辑:看来我最终可能会问是否有人有一些针对 CRM Online 的不错的 WatiN 代码


我不确定我是否理解您想要完成的所有事情,但我打赌根据您的评论您已经看过了CRM 2011 插件测试工具 http://crm2011plugintest.codeplex.com/在 codePlex 上。由于项目描述和发行说明都提到 MS 员工帮助开发了该项目,因此您很快就会发现 MS 对您所要求的支持是有限的。

正如 Jon C 提到的,Josh Painter在另一个问题的回答中提到 https://stackoverflow.com/questions/8401537/is-it-possible-to-place-an-org-in-its-own-process/8406398#8406398您可以使用一个内置的插件调试器,它将在客户端计算机上执行。

Also, Erik Pool 在他的博客上发布 http://erikpool.blogspot.com/2011/02/crm-2011-plug-in-tips-and-tricks-part-2.html关于手动实例化的一个很好的条目IPluginExecutionContext为你的插件。

希望这三个解决方案之一有效!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CRM Online 2011 集成测试在生产环境中运行 的相关文章

  • django get_or_create 返回错误:“tuple”对象没有属性

    我是 django 新手 我正在尝试使用 get or create 模型函数 但即使我的模型中有该属性 我也会收到错误 AttributeError at professor adicionar compromisso tuple obj
  • 创建自定义颜色集 TinyMCE

    我已经能够为 TinyMCE 创建自己的字体颜色选择器 但是调色板链接到原始颜色选择器 我想做的是使我的自定义颜色选择器完全独立于原始颜色选择器 这样我可以同时显示两者 这是我当前的代码 这可以工作 但是两个按钮的调色板是相同的 tinym

随机推荐

  • Accept_nested_attributes_for :allow_destroy, :_destroy 不起作用

    我有一个 Rails 4 1 应用程序 它使用了一些值得注意的技术 简单的形式 茧 我在销毁嵌套属性的记录时遇到问题 基于一些冗长的研究 我相信我的代码是正确的 但是我可能遗漏了一些愚蠢的东西 Model has many staff se
  • 具有固定键的字典上的多线程

    我有一本带有固定键集合的字典 是我在程序开始时创建的 后来 我有一些线程用值更新字典 一旦线程启动 就不会添加或删除任何对 每个线程都有自己的密钥 意义 只有一个线程会访问某个键 该线程可能更新值 问题是 我应该锁定字典吗 UPDATE 谢
  • jQuery 的元素或类喜欢选择器?

    无论出于何种原因 我将这些课程称为 main sub1 main sub2等等 别介意为什么我不能拥有 main sub 有没有一种方法可以用 jQuery 来获取包含属性的类 main Using class main 将选择其类名的所有
  • wso2 svn 更新 - E205011:处理一个或多个外部定义时发生故障

    我在尝试着svn update4 0 0平台分支 却屡次碰到错误 E205011 Failure occurred processing one or more externals definitions My svn info outpu
  • 将字符串作为指针或文字传递时,strcmp() 返回值不一致

    我正在玩strcmp当我注意到这一点时 这是代码 include
  • 通过引用的部分数组

    我的问题很简单 是否可以像在 C 中那样 通过引用检索 VBA 中数组的两个部分 自从我用 C 编写代码以来已经有一段时间了 所以我不太记得我现在是怎么做的 如果我记得的话 也许我会举个例子 我想做的是按单个 Double 类型属性对对象数
  • C++中的随机函数

    有没有一个函数可以生成指定范围内的k个随机数 例如 我想要 5 个 0 到 100 之间的随机数 带或不带替换 你可以使用std generate n http en cppreference com w cpp algorithm gen
  • 如何在 Javascript 中使用 getter 和 setter

    有人可以向我解释一下为什么这段简单的代码不起作用吗 var user get name return this name set name value this name value user name David 当我将其放入 Firef
  • 从 Graph API 显示 [图像][url]

    构建 Facebook 视频应用程序 用户可以通过在应用程序og like中使用来收藏视频 I use response facebook gt api me og likes GET 我会得到 data object id 1399918
  • 如何在云中的 Ubuntu 20.04 上运行 Gnome 桌面

    在 Google 搜索在云实例上运行 Gnome 桌面或仅桌面 找到 Xfce4 信息 后 我在 Digital Ocean 找到了一些指南 例如 在 Ubuntu 20 04LTS 上安装和配置 VNC https www digital
  • 为什么在 bash 中睡眠并等待?

    我无法理解此服务的启动命令docker compose yml https github com wmnnd nginx certbot blob master docker compose yml yml 中的两行相关内容是 comman
  • 在类新实例上使用 Spring @Autowired

    我对Spring不太熟悉 我有以下情况 存储库类 Repository public class MyRepository 使用存储库类的类 public class MyClass extends AbstractClass Autowi
  • Mac DMG 怪事 - 签名和“损坏”的应用程序

    我的 Gatekeeper 设置是 App Store 和已识别的开发人员 我有一个带有签名应用程序的 DMG 当我安装 DMG 并在本地运行它时 它可以工作 当我将相同的 DMG 上传到我们的服务器 通过 http 下载它 通过 http
  • PHP - 如何更新 txt 文件中的 JSON 数据?

    这是保存在文件中的 JSON 数据示例data txt name yekky name mussie name jessecasicas many rows 我想更新该文件 使其看起来像这样 name yekky num 1 name mu
  • Pixel 2 XL 上的本机异常

    我在 Pixel 2 XL 上运行应用程序时遇到一些问题 昨天 它运行良好 并且该应用程序按预期在模拟器上运行 Behavior 应用程序第一次启动时可以正常工作 再次启动会导致本机代码出现异常 我的应用程序没有本机库 例外 2021 03
  • 何时/为何应在 Java 中使用多线程? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我不知道在Java开发中什么时候应该使用多线程 以及使用它的逻辑 原因 它在不同的场景中有何帮助 场景1 我正在制作一款带有敌人的 2
  • 具有 BoundedCapacity 的 BufferBlock 和 ActionBlock 不使用最大 DOP

    我有这个代码 var data new BufferBlock
  • x86 汇编中 cmove 指令的用途?

    反汇编可执行文件时我遇到了cmove操作说明 我已经在互联网上搜索过 但我只发现这是一个有条件的移动 如果源和目的地相等mov发生 我还不明白为什么我需要它 因为它不会改变操作数 它的目的是什么 The CMOVcc指令不比较源和目标 它们
  • 验证和多重绑定问题

    在我的 WPF 应用程序中 我使用以下 xaml
  • CRM Online 2011 集成测试在生产环境中运行

    我正在为 Dynamics CRM 编写一些代码Online 2011 我想要运行一组集成测试inCRM Online 并能够检查 一些日志输出 断言失败 Under 的控制我本地机器上的测试运行程序 现在 我正在做 var passes