如何在所有浏览器中运行单元测试?

时间:2011-04-21 05:12:18

标签: javascript testing selenium tdd bdd

我从未使用过Selenium,但我想这是为了模拟所有浏览器中的用户互动。

这就像整合测试一样。

但是,如何以自动方式在所有浏览器上测试js库/框架(单元测试)?

14 个答案:

答案 0 :(得分:27)

对于单元测试,您可以尝试http://code.google.com/p/js-test-driver/

  

JsTestDriver由一个JAR文件组成,其中包含入门所需的所有内容。有关命令行选项的深入讨论,请参阅GettingStarted。

     

以下概述了JsTestDriver在运行时的工作原理......

答案 1 :(得分:13)

您可以查看TestSwarm

  

我正在开展的项目: TestSwarm ...

     

它的构造非常简单。这是一个愚蠢的JavaScript客户端,不断地ping中央服务器,寻找更多的测试运行。服务器收集测试套件并将它们发送给相应的客户端。

     

收集所有测试套件。例如,1“commit”可以有10个与之关联的测试套件(并分发给各种浏览器)......

     

这种结构的好处在于它能够以容错的方式工作。客户可以来去匆匆。在任何给定时间可能没有连接Firefox 2,在另一个时间可能有30。作业排队并在负载需要时进行分配。此外,客户端非常简单,可以在移动设备上运行(同时完全与测试框架无关)......

答案 2 :(得分:7)

正如前一篇文章中提到的那样,您可以使用js-test-driver。 它专门用于跨多个浏览器的JavaScript单元测试,正是您想要的。我搞砸了它,它非常好。我没有做过任何严肃的商业测试。

答案 3 :(得分:7)

最好的一个imo来自YUI:http://developer.yahoo.com/yui/3/test/ 但是在每个浏览器中进行单元测试都很难......大多数人只是在开发过程中使用它进行测试,并且稍后使用node.js进行测试,以防万一它们发生故障。

答案 4 :(得分:6)

对于单元测试,您应该查看不加载浏览器进行测试的解决方案。

你可以看一下像RhinoUnit这样的东西 - http://code.google.com/p/rhinounit

另请参阅Dojo Object Harness(DOH)单元测试框架http://dojotoolkit.org/reference-guide/util/doh.html

在这里查看类似的问题,可以让您了解如何使用TDD js - JavaScript unit test tools for TDD

答案 5 :(得分:6)

不再主动维护,但我仍然对JSUnit进行Javascript单元测试感到满意:https://github.com/pivotal/jsunit

它包括可以在浏览器中运行的HTML / Javascript框架,以及可以从ant调用的基于java的测试运行器。

答案 6 :(得分:5)

要同时测试多个浏览器,您可以使用Selenium Grid。请查看此处:http://selenium-grid.seleniumhq.org/step_by_step_installation_instructions_for_windows.html了解如何使用它的分步说明。

答案 7 :(得分:5)

到目前为止我还没有使用它,它仍处于测试阶段,但是FuncUnit将自己声明为“基于qUnit,Selenium和jQuery的功能测试套件”。

还有infographic解释它是如何工作的

也许这是你想要的东西? github repo似乎非常活跃。

答案 8 :(得分:4)

您应该检查http://saucelabs.com它的云基础硒环境,它允许您构建测试然后上传它们,在任意数量的浏览器中运行它们。

答案 9 :(得分:4)

您应该考虑crossbrowsertesting.com提供的功能 (它不是免费的)。对于js测试,请尝试JsUnit(http://www.jsunit.net/)。

从其主页引用

JsUnit是客户端(浏览器内)JavaScript的单元测试框架。它本质上是JUnit到JavaScript的一个端口。还包括一个平台,用于在多个浏览器和运行不同操作系统的多台计算机上自动执行测试。

答案 10 :(得分:3)

正如人们已经这样说过的,你应该使用JsTestDriver。它有自己的测试系统,但您可以使用其他测试库,例如Jasmine(http://pivotal.github.com/jasmine/)。您可以在此处找到JsTestDriver的适配器列表:http://code.google.com/p/js-test-driver/wiki/XUnitCompatibility

答案 11 :(得分:3)

我会选择QUnit,这是jQuery使用的。我在许多桌面浏览器以及iPhone和Android手机上运行它。

有一些很棒的tutorials,可以轻松地与js-test-driver之类的内容进行整合。 QUnit以JUnit和所有其他xUnit测试框架(如PHPUnit)为模型,因此很容易获取API。

基本语法如下:

test("my first test", function() {
  var str = "hello";
  equals( "hello", str, "Should be hello" );
});

它看起来也很不错:

QUnit screenshot

答案 12 :(得分:2)

很少有公司专门从事跨浏览器测试。

http://browserling.com/

http://www.browserstack.com/

http://saucelabs.com/(已在此处提及)

http://browsershots.org/

http://www.browsercam.com/

http://browserseal.com/

使用您想要的任何测试库。

答案 13 :(得分:1)

Selenium或SauceLabs等不是单元测试。它们是功能/集成测试解决方案。

您需要将像DOM这样的外部用法抽象为单元测试javascript。

编写测试,以便他们可以通过配置使用任何外部库,如jquery。因此,您可以在不触及任何外部性的情况下对您的逻辑进行单元测试,您也可以测试跨浏览器测试。

相关问题