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

时间:2011-12-13 11:06:23

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

我正在为Dynamics CRM 在线 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. 下载例外数据文件
  5. 必须有一种更好的方法,但我在文档或博客或论坛中找不到任何引用来通过测试触发插件代码(并获得异常输出)。

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

    这可能吗?让其他人做过类似的事吗?当然,并不是所有的CRM 2011开发人员都陷入了使用鼠标循环的whackamole?


    注意我对内部调试不感兴趣,理想情况下不希望将结果存储到定制实体中。我知道我可以截取页面,但我希望有一些方法可以做相当于webservice调用。或者有人有一个很好的框架,只是完成所有(或我可以调整)。

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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