3

我正在为 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 开发人员都陷入了鼠标循环的困境吗?


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

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

4

1 回答 1

2

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

正如 Jon C 所提到的,Josh Painter在回答另一个问题时提到有一个可以使用的内置插件调试器,它将在客户端计算机上执行。

此外,Erik Pool 在他的博客上发布了一篇IPluginExecutionContext关于为插件手动实例化 a 的精彩文章。

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

于 2011-12-14T20:19:38.027 回答