Testing 在linux中使用HtmlUnitDriver和使用Xvfb编写无头测试有什么区别?

Testing 在linux中使用HtmlUnitDriver和使用Xvfb编写无头测试有什么区别?,testing,webdriver,htmlunit,xvfb,Testing,Webdriver,Htmlunit,Xvfb,我是个测试新手 我在Linux上工作。 我在读关于无头模式下测试的书时,遇到了两件事。一个是X虚拟帧缓冲区,它在内存中执行图形操作。因此,不显示任何输出。我在这个链接中找到的实现细节 我遇到的另一个是HtmlUnitDriver。这也不会在运行测试时打开任何浏览器。我使用HtmlUnitDriver编写了一个基本的示例代码,断言似乎运行良好 我知道HtmlUnitDriver不能很好地使用javascript。但除此之外,选择其中一个与另一个有什么重大区别吗 我将要测试一个web应用程序,它确实

我是个测试新手

我在Linux上工作。 我在读关于无头模式下测试的书时,遇到了两件事。一个是X虚拟帧缓冲区,它在内存中执行图形操作。因此,不显示任何输出。我在这个链接中找到的实现细节

我遇到的另一个是HtmlUnitDriver。这也不会在运行测试时打开任何浏览器。我使用HtmlUnitDriver编写了一个基本的示例代码,断言似乎运行良好

我知道HtmlUnitDriver不能很好地使用javascript。但除此之外,选择其中一个与另一个有什么重大区别吗

我将要测试一个web应用程序,它确实包含一些javascript

我是这个领域的新手。因此,任何答案、建议等都将不胜感激。
根据我对这两种方法的经验,提前向您表示感谢

  • 在大多数实际情况下,HtmlUnit会比使用xvfb的真正浏览器更快——这仅仅是因为它不花时间渲染页面。(数据点:对于我现在使用的特定测试套件,HTMLDRIVE为17秒,FirefoxDriver为62秒)
  • 使用HtmlUnit可以更轻松地同时运行多个测试,并且消耗的资源更少。如果您有大量测试并且需要快速完成(例如,您希望遵循10分钟构建规则),那么这一点非常重要
  • 正如您所说,HtmlUnit在JavaScript和DOM方面有自己的怪癖。不比任何其他浏览器(Firefox、Safari、IE、Chrome等)更好或更差——它们都有自己的怪癖,但花时间修复bug是非常值得怀疑的。我也发现这样的错误很难诊断,但这可能只是我的无知
  • 真正的浏览器+xvfb的一个优点是,在没有xvfb的情况下,您可以始终使用完全相同的测试,并查看发生了什么情况——甚至可以使用控制台运行一些JavaScript来诊断问题。在使用HtmlUnit时,我有时会感到很盲目,因为上面提到的怪癖,您不能在两种环境中始终使用相同的精确测试代码
所以,总而言之,除非总的测试持续时间很重要,并且您已经准备好花一些时间与HtmlUnit进行斗争,否则使用常规浏览器+xvfb就更容易了


我还喜欢使用xvnc,它的另一个好处是允许您连接到正在运行的测试的屏幕,并查看正在进行的测试(不确定您是否可以使用xvfb执行该操作)。

根据我使用这两种方法的经验:

  • 在大多数实际情况下,HtmlUnit会比使用xvfb的真正浏览器更快——这仅仅是因为它不花时间渲染页面。(数据点:对于我现在使用的特定测试套件,HTMLDRIVE为17秒,FirefoxDriver为62秒)
  • 使用HtmlUnit可以更轻松地同时运行多个测试,并且消耗的资源更少。如果您有大量测试并且需要快速完成(例如,您希望遵循10分钟构建规则),那么这一点非常重要
  • 正如您所说,HtmlUnit在JavaScript和DOM方面有自己的怪癖。不比任何其他浏览器(Firefox、Safari、IE、Chrome等)更好或更差——它们都有自己的怪癖,但花时间修复bug是非常值得怀疑的。我也发现这样的错误很难诊断,但这可能只是我的无知
  • 真正的浏览器+xvfb的一个优点是,在没有xvfb的情况下,您可以始终使用完全相同的测试,并查看发生了什么情况——甚至可以使用控制台运行一些JavaScript来诊断问题。在使用HtmlUnit时,我有时会感到很盲目,因为上面提到的怪癖,您不能在两种环境中始终使用相同的精确测试代码
所以,总而言之,除非总的测试持续时间很重要,并且您已经准备好花一些时间与HtmlUnit进行斗争,否则使用常规浏览器+xvfb就更容易了

我还喜欢使用xvnc,它的另一个好处是允许您连接到正在运行的测试的屏幕,并查看发生了什么(不确定是否可以使用xvfb)