【问题标题】:how can I validate two ASP.NET pages have the same output HTML?如何验证两个 ASP.NET 页面是否具有相同的输出 HTML?
【发布时间】:2013-02-27 07:55:53
【问题描述】:

我正在为一个 ASP.NET 网站处理遗留代码,我想重构。

我得出的结论是,测试中断的最简单方法是将最终 HTML 与旧页面进行比较,尤其是因为无论如何都对 UI 有太多依赖。 (如果这是一个不好的方法,请批评)

页面是从查询字符串动态创建的,所以我需要使用所有不同的组合生成测试。

我该如何运行这个测试,理想情况下我也想将它集成到 NUnit 等工具中,可以这样做吗?

谢谢

【问题讨论】:

    标签: asp.net unit-testing refactoring nunit legacy-code


    【解决方案1】:

    如果您拥有测试版或终极版,Visual Studio 中有一些选项,Selenium 可能是另一个选项。

    关于测试 UI 并且您仍然在 Web 表单中,它总是相当复杂,因此根据您的场景,有些东西很容易在代码中测试(在 UI 之前),而其他东西可以只看一下,直到最后渲染您的 HTML。

    【讨论】:

      【解决方案2】:

      即使添加像 Panel 这样的单个容器控件也会完全破坏您的逻辑,因为这会更改为旧版 asp.net 生成的 ClientID。

      你肯定会得到太多误报,而页面并没有真正损坏。

      此外,asp.net 不会呈现任何设置为 Visible false 的内容。除非您的项目没有在按钮单击(回发)时可见的代码,否则您不应该遵循这种方法。您会错过对隐藏部分的任何更改。

      用户接受重构、迁移后的最终页面;最好手动完成。
      您可以自动化数据和业务逻辑层的测试,但是使用传统的 asp.net 自动化 UI 测试似乎会占用太多时间并且几乎没有收益。

      【讨论】:

      • 2 个问题。 1)我可以模仿回发吗? 2) 如果我只检查相关的 HTML,即使用 HTMLAgilityPack 解析为有效的 XML 并只检查具有特定 id 的部分,这仍然是一个不好的方法吗?
      • 问题是ids会改变。方法还不错。您可能需要投入时间才能做到正确,这似乎不值得。这是主观的,取决于您网站的大小。
      【解决方案3】:

      我偶然发现了一个似乎可以做到这一点的有趣工具,Llewellyn Falco 称为 Approval Tests。

      http://www.youtube.com/watch?v=52YouQkd-f8

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-03-02
        • 1970-01-01
        • 2020-02-23
        • 1970-01-01
        • 1970-01-01
        • 2018-07-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多