我正在为 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());
我通过连接到联系人创建的插件操作触发此代码:
- 上传插件
- 创建联系人
- 点击保存
- 下载异常数据文件
必须有更好的方法,但我根本无法在文档或博客或论坛中找到任何参考)通过测试触发插件代码(并获得异常输出)。
我希望能够在插件中调用一个方法,然后将包括完整堆栈跟踪和日志输出在内的结果返回到 xUnit 测试的上下文中。
那可能吗?其他人有没有做过类似的事情?不是所有的 CRM 2011 开发人员都陷入了鼠标循环的困境吗?
注意我对本地调试不感兴趣,理想情况下不希望将结果存储到定制实体中。我知道我可以对页面进行屏幕截图,但我希望有某种方法可以进行相当于 Web 服务调用的操作。或者有人有一个很好的框架,可以简单地完成所有事情(或者我可以调整)。
编辑:看起来我可能最终会问是否有人有一些针对 CRM Online 的不错的 WatiN 代码