Java 集成测试和UI更改
我们的web应用程序有许多集成测试。如何处理页面UI结构的更改?所有测试都基于带有id和特定标记名的xpath(真正糟糕的是)Java 集成测试和UI更改,java,jsp,testing,integration-testing,web-testing,Java,Jsp,Testing,Integration Testing,Web Testing,我们的web应用程序有许多集成测试。如何处理页面UI结构的更改?所有测试都基于带有id和特定标记名的xpath(真正糟糕的是) ID组是一个契约,但web开发人员如何在不失败测试的情况下轻松修改页面?正如您所注意到的,XPath表达式非常脆弱,因为即使对页面结构进行很小的更改也会破坏它们。我不建议在测试中使用它们作为查找特定元素的方法 是否可以重写测试以仅使用元素的唯一ID而不使用XPath表达式搜索元素?修改页面时很容易保留ID 或者,如果出于某种原因,您需要经常更改元素的ID,那么您可以向H
ID组是一个契约,但web开发人员如何在不失败测试的情况下轻松修改页面?正如您所注意到的,XPath表达式非常脆弱,因为即使对页面结构进行很小的更改也会破坏它们。我不建议在测试中使用它们作为查找特定元素的方法 是否可以重写测试以仅使用元素的唯一ID而不使用XPath表达式搜索元素?修改页面时很容易保留ID 或者,如果出于某种原因,您需要经常更改元素的ID,那么您可以向HTML标记添加另一个属性,其中包含唯一且不变的“测试ID”,如下所示:
<a href="mylink.html" id="idThatWillBeChanged" test-id="myLink">My link</a>
然后您可以使用该测试id定位元素。不幸的是,添加这样的属性将意味着您的页面停止验证为有效的HTML,一些IDE会将其标记为错误。据我所知,问题的根源在于您应该在所有测试用例中反映DOM的更改。可以通过添加另一个抽象层来消除这种冲突。在这种情况下,当元素发生更改时,您将仅在一个类中更新它 另见:
data-*
属性,而不是自定义属性。见: