【问题标题】:CRM Online 2011 Integration Testing running in Production environment在生产环境中运行的 CRM Online 2011 集成测试
【发布时间】:2012-01-19 06:15:43
【问题描述】:

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

我希望 CRM Online 中运行一组集成测试并能够检查:

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

在我本地机器上的一个测试运行器的控制下

现在,我正在做:

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());

我通过连接到联系人创建的插件操作触发此代码:

  1. 上传插件
  2. 创建联系人
  3. 点击保存
  4. 下载异常数据文件

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

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

这可能吗?其他人有没有做过类似的事情?肯定不是所有 CRM 2011 开发人员都陷入了鼠标循环的困境?


NB 我对本地调试不感兴趣,最好不要将结果存储到定制实体中。我知道我可以对页面进行屏幕截图,但我希望有某种方法可以进行相当于 Web 服务调用的操作。或者有人有一个很好的框架,可以简单地完成所有事情(或者我可以调整)。

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

【问题讨论】:

  • @Jon C 感谢您的回复-想知道那里是否有人。我对如何进行单元测试和/或模拟和/或在本地进行调试很满意,我不想暂停它。我看到了用于发送序列化 PluginContexts 的 codeplex 东西。我不想要任何这些 - 我想要 a) 触发我的代码在 in CRM Online 中运行而不进行屏幕抓取 b) 将响应返回到客户端机器上进行解释。对不起,如果我不清楚我的限制。我真的很难相信没有这样的机制,但是广泛的搜索却一无所获。
  • 您希望每次用户创建联系人时返回异常数据,还是仅在您进行测试时返回?
  • @Peter Majeed:只有当我通过我的测试来驱动它时(我不希望人们以交互方式或同时运行它将结果注入我的结果流 - 即,我真的很想避免存储它在自定义实体或日志中)。

标签: dynamics-crm-2011 crm dynamics-crm-online


【解决方案1】:

我不确定我是否理解你想要完成的所有事情,但我根据你已经看过的评论打赌 CRM 2011 Plugin Testing Tools 在 codePlex 上。由于项目描述和发行说明都提到 MS 员工帮助开发了该项目,因此您可以很快看到 MS 对您所要求的支持是有限的。

正如 Jon C 提到的,Josh Painter mentioned in an answer to another question 有一个可以使用的内置插件调试器,它将在客户端计算机上执行。

另外,Erik Pool posted on his blog 是关于为您的插件手动实例化 IPluginExecutionContext 的一个很好的条目。

希望这三种解决方案中的一种有效!

【讨论】:

  • +1 谢谢彼得。值得深思的好食物-会看看...看过 Erik Pool 一个-虽然它完成了很多,但它并没有在服务器上运行我的代码-即,我不知道我是否在做中等信任的事情防止虽然
  • @RubenBartelink - 我明白你的意思。我能想到的唯一另一种处理方法是创建一个与您的产品组织分开的测试组织,在那里您可以做任何您想做的事情,因为部署到组织的任何东西,AFAIK,都会影响该组织中的所有用户。
  • 是的,我实际上是专门为此目的使用一个帐户(我的实际工作是支持将编写真正插件的人的后端管道)。 Part 1 of the same series 诱人甚至展示了如何轻松更新程序集...(我最初将问题命名为验收而不是集成测试,因为从我交付的层的角度来看它实际上是验收,而大多数插件开发人员会考虑接受使用真实数据提供真实 UI,即 WatiN/Selenium)
  • @Josh Painter 的答案很简洁(取自 Erik Porter '单元测试' 博客的第 1 部分)——如果我正在对插件进行重要的调试器驱动开发,那将是必须的有技术。如果一个人基于输入上下文进行更复杂的操作(这并没有真正描述我的情况),那么 crm2011plugintest 显然很有趣。但是再次非常感谢您的回答——我毫不怀疑它会很好地为某人服务,作为一般测试方法的自上而下的总结。 ...blogs.msdn.com/b/devkeydet/archive/2011/12/08/…
  • 我还看到pluginregcrm2011.codeplex.com/documentation 提供了一个用于上传插件的控制台应用程序,这将构成我的整体解决方案的一部分......
猜你喜欢
  • 2017-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-09
  • 2017-05-27
  • 2022-11-10
  • 1970-01-01
相关资源
最近更新 更多