.net 在集成(WATIN + NUUNIT)测试期间检测ELMAH异常

3phpmpom  于 2023-04-22  发布在  .NET
关注(0)|答案(3)|浏览(99)

以下是我的场景:

  • 我有一套WATIN GUI测试,ASP.net在CI中针对每个构建的www.example.com MVC3 Web应用程序运行。这些测试验证了GUI在给定某些输入时的行为是否符合预期。
  • Web应用程序使用ELMAH xml文件记录异常。

问:如何验证在每次测试运行期间没有意外的异常发生。如果确实发生了异常,最好在NUIT输出中提供一个到异常的ELMAH详细信息的链接。

ev7lccsx

ev7lccsx1#

Elmah在Web应用程序中运行,它是一个独立于测试运行器的进程。没有简单的方法直接拦截未处理的错误。首先想到的是查看保存Elmah XML错误报告的文件夹(App_Data?)。
您可以在每次测试开始时从文件夹中清 debugging 误报告,并在测试结束时检查文件夹是否仍为空。如果文件夹不为空,则可以将错误报告复制到测试输出中。
这种方法并不是无懈可击的。当您检查文件夹时,可能会发生错误,但XML文件尚未(完全)写入。例如,当您的Web应用程序超时时。如果您尝试读取仍在写入的XML文件,则可能还会遇到文件锁定问题。
您可以配置Elmah来记录数据库并从那里读取错误报告,而不是从磁盘阅读XML文件。这将有助于您在发生文件锁定问题时解决这些问题。

ztmd8pv5

ztmd8pv52#

为什么不在WatiN测试的设置中转到Elmah报告视图(可能是elmah.axd)并读取记录在那里的最新错误的时间戳。然后在测试后做同样的事情并Assert时间戳是相同的。
很容易从同一行读取最近的错误的url,并将其记录在失败的assert消息中,然后将其记录在nunit输出中。

nx7onnlm

nx7onnlm3#

这就是我的测试所做的:
1.在测试设置过程中,记录时间
1.运行测试
1.在测试拆卸期间,浏览到(elmah.axd/download)并解析ELMAH CSV
1.筛选出与运行WATIN测试的用户不匹配的行以及UNIX时间早于(1)中记录的时间的行
1.如果有行,则将异常消息和错误URL报告给NUNIT。
似乎工作得很好,我们已经发现了一些bug,这些bug在人类测试应用程序之前不会出现。

相关问题