Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
哪个Javascript测试框架支持无浏览器测试?_Javascript_Unit Testing_Testing_Continuous Integration - Fatal编程技术网

哪个Javascript测试框架支持无浏览器测试?

哪个Javascript测试框架支持无浏览器测试?,javascript,unit-testing,testing,continuous-integration,Javascript,Unit Testing,Testing,Continuous Integration,对于Javascript,存在一些测试框架,如JSUnit或js测试驱动程序。它们很好,但它们在浏览器中运行测试。这很好,尤其是要验证您的webapp是否在不同的浏览器中运行。但在out continuous integration server上未安装窗口系统(也未安装浏览器)。那么,有没有一种不用浏览器就能运行测试的方法呢?最好使用一个现有的框架,这样开发人员就可以在浏览器中本地运行测试,而持续集成系统则可以无浏览器运行测试。可以通过命令行运行,也可以作为eclipse插件运行 但是,要小心

对于Javascript,存在一些测试框架,如JSUnit或js测试驱动程序。它们很好,但它们在浏览器中运行测试。这很好,尤其是要验证您的webapp是否在不同的浏览器中运行。但在out continuous integration server上未安装窗口系统(也未安装浏览器)。那么,有没有一种不用浏览器就能运行测试的方法呢?最好使用一个现有的框架,这样开发人员就可以在浏览器中本地运行测试,而持续集成系统则可以无浏览器运行测试。

可以通过命令行运行,也可以作为eclipse插件运行


但是,要小心,如果您需要支持多个浏览器,那么使用这样的工具将无法获得100%的代码覆盖率。每个浏览器实现JavaScript的方式不同(即:IE)。因此,全面测试JavaScript的唯一方法是在您支持的所有浏览器中运行测试。

我相信Canoo WebTest可以在没有浏览器的情况下运行。它基本上是一个前端测试框架,但也可用于测试JavaScript:


您可能会感兴趣的是,在没有浏览器(使用Rhino)的情况下,可以运行几个UI测试框架,如JSpec。但也支持在浏览器中运行

它还提供了很好的规范样式语法:

describe 'ShoppingCart'   
  describe 'addProduct'   
    it 'should add a product'  
      cart.addProduct('cookie') 
      cart.addProduct('icecream') 
      cart.should.have 2, 'products'   
    end   
  end 
end

通过在浏览器之外运行所有单元测试,您还可以获得确保将逻辑与html/表示层分离的好处(对于web应用程序很有用,对于小脚本来说可能有些过分)。

Jasmine将在node.js中非常愉快地运行。

请看以下文章:


此外,我们有一个jsTestDriver服务器,它运行在两个web浏览器(作为远程控制台运行程序)上,作为Jenkins的资源,因此您可以使用CI在web浏览器中进行测试。

这不是对您问题的回答,但我建议在真正的浏览器中进行测试。这是最终用户将看到的,因此应该对此进行测试。CI安装在什么操作系统上?CI安装在linux上,但没有X。因此无法在CI服务器上进行浏览器测试。在浏览器中,它将由开发人员进行测试,但我想将测试也添加到CI中。phantomjs呢?jspec项目已经死了,在他们的网站完全消失之前,推荐Jasmine代替。我不知道你为什么说你不能得到100%的保险。覆盖率意味着代码被执行。您指出的问题(跨浏览器兼容性)是,相同的代码在不同的执行环境中可能意味着(和做)不同的事情。这意味着,如果你在Firefox中有100%的覆盖率,它可能不会告诉你你想知道的关于IE中代码行为的所有信息。你可以在没有100%知识的情况下获得100%的覆盖率。(即使在所有浏览器中100%的覆盖率也不等于100%的知识,但这是一个不同的问题。)这是5年前的事了。当时的Web开发充满了依赖浏览器的分支,因为API是如此的不同。如果您在Firefox、某些命令行运行程序等中运行测试,则无法在处理其他浏览器的其他分支中执行任何代码。由于您有一半的分支未经测试,因此您不能要求100%的代码覆盖率。如今,这里的风景已经大不相同了。我真的不记得上一次我必须为不同的浏览器做不同的事情是什么时候了。