在集成(WATIN + NUNIT)测试期间检测ELMAH异常

时间:2012-01-23 18:21:27

标签: asp.net-mvc-3 watin elmah

以下是我的情景:

  • 我有一套WATIN GUI测试,针对每个构建CI的ASP.net MVC3 Web应用程序运行。测试验证了在给定某些输入时GUI的行为与预期一致。

  • Web应用程序使用ELMAH xml文件记录异常。

问题:如何验证每次测试运行期间没有发生意外异常。如果发生异常,在NUNIT输出中提供指向异常的ELMAH细节的链接也是很好的。

3 个答案:

答案 0 :(得分:1)

Elmah在Web应用程序中运行,这是一个与测试运行器不同的过程。没有简单的方法可以直接拦截未处理的错误。 首先想到的是观察包含Elmah XML错误报告的文件夹(App_Data?)。

您可以在每次测试开始时清除文件夹中的错误报告,并在测试结束时检查它是否仍为空。如果文件夹不为空,则可以将错误报告复制到测试输出中。

这种方法不是防弹的。可能会发生错误,但在检查文件夹时尚未(完全)写入XML文件。例如,当您的Web应用程序超时时。如果您尝试读取仍在编写的XML文件,则可能还会遇到文件锁定问题。

您可以将Elmah配置为登录数据库并从那里读取错误报告,而不是从磁盘读取XML文件。这可以帮助您解决文件锁定问题。

答案 1 :(得分:1)

为什么不在WatiN测试的设置中转到Elmah报告视图(可能是elmah.axd)并读取其中记录的最新错误的时间戳。然后在测试后执行相同的操作并断言时间戳是相同的。

很容易从同一行读取这个最新错误的url并记录在你的nunit输出中失败断言的消息中。

答案 2 :(得分:0)

这是我的测试所做的:

  1. 在测试设置期间记录时间
  2. 运行测试
  3. 在测试拆解期间浏览到(elmah.axd / download)并解析ELMAH CSV
  4. 过滤掉与运行WATIN测试的用户不匹配的行以及UNIX时间在(1)
  5. 中记录时间之前的行
  6. 如果有行将异常消息和错误URL报告给NUNIT。
  7. 似乎运行良好,我们已经发现了一些在人类测试应用程序之前不会出现的错误。