2012-01-23 98 views
2

这里是我的情况:整合期间检测ELMAH异常(华廷+ NUNIT)测试

  • 我有一套,对在CI每共建ASP.net MVC3 Web应用程序运行华廷GUI测试。测试验证在给定某些输入时GUI的行为与预期相同。

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

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

回答

0

这是我的测试做:

  1. 在测试设置记录的时间
  2. 运行测试
  3. 在测试过程中拆卸浏览(elmah.axd /下载)并解析ELMAH CSV
  4. 过滤掉不运行的华廷测试和排在UNIX时间是(1)
  5. 如果有行报告的异常消息和错误的URL NUNIT记录时间之前,用户相匹配的行。

似乎工作得很好,我们已经发现了一些错误,直到人类测试应用程序时才会出现。

1

Elmah在Web应用程序中运行,它与测试运行器是一个独立的进程。没有简单的方法直接拦截未处理的错误。 首先想到的是观察保存Elmah XML错误报告的文件夹(App_Data?)。

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

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

而不是从磁盘读取XML文件,您可以配置ELMAH登录到数据库,并从那里读取错误报告。如果它们发生,这将有助于解决文件锁定问题。

+0

我试过观看Marnix van Valen建议的app_data文件夹的想法,但是如果发现异常,则无法确定是否已写入xml文件。我认为ELMAH有时会将异常数据保存在内存中,直到浏览AXD和特定的异常为止。因为我们想避免依赖关系,所以SQL不在了。我要尝试的另一条路线是下载并解析ELMAH提供的CSV日志。将发布结果。谢谢你的帮助。 – Solracnapod

1

为什么不去给ELMAH报告视图(可能elmah.axd)在华廷测试的设置和读取最近的错误的时间戳记录在那里。然后在你的测试后做同样的事情,并断言时间戳是相同的。

这将是很容易从同一行读这最近错误的网址,并记录你的失败断言的消息,那么这将是你的NUnit的产出分析。

+0

报告视图(elmah.axd)中的时间列仅限于分钟。日志的CSV(elmah.axd/download)有一个UNIX时间列,我最终使用它来获得所需的时间精度。 – Solracnapod