【发布时间】: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());
我通过连接到联系人创建的插件操作触发此代码:
- 上传插件
- 创建联系人
- 点击保存
- 下载异常数据文件
必须有更好的方法,但我在文档、博客或论坛中根本找不到任何参考)通过测试触发插件代码(并获得异常输出)。
我希望能够调用插件中的一个方法,然后将包括完整堆栈跟踪和日志输出在内的结果返回到 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