如何在所有浏览器中运行unit testing?
我从来没有使用selenium,但我想这是为了模拟所有浏览器中的用户交互。
这就像集成testing。
但是,你如何以自动的方式在所有的浏览器上testing你的js库/框架(unit testing)呢?
最好的一个是来自YUI的: http : //developer.yahoo.com/yui/3/test/但是在每个浏览器中进行unit testing都很困难…大多数人只是在开发过程中testing它,只要使用node.js稍后testing,以防万一他们破坏了某些东西。
对于unit testing,您可以尝试http://code.google.com/p/js-test-driver/
JsTestDriver由一个JAR文件组成,其中包含了开始所需的所有东西。 有关命令行选项的深入讨论,请参阅GettingStarted。
这里是JsTestDriver如何在运行时工作的概述…
你可以看看TestSwarm :
我正在处理的项目: TestSwarm …
它的build设非常简单。 这是一个愚蠢的JavaScript客户端不断ping中央服务器寻找更多的testing运行。 服务器收集testing套件并将其发送给相应的客户端。
所有的testing套件都被收集起来。 例如,1“提交”可以有10个testing套件与其关联(并分发给浏览器)…
这种结构的好处在于它能够以容错的方式工作。 客户可以来来去去。 在任何时候,可能没有连接的Firefox 2,在另一个时间可能有三十。 这些工作是排队和分摊负载需要它。 另外,客户端足够简单,能够在移动设备上运行(虽然完全是testing框架不可知的)。
正如前一篇文章中的引用文章所build议的那样,您可以使用js-test-driver 。 它专门用于跨多个浏览器的JavaScriptunit testing,正是你想要的。 我搞砸了,这是相当不错的。 虽然我没有做过任何严肃的商业testing。
对于unit testing,您应该查看不会加载浏览器来执行testing的解决scheme。
你可以看看类似RhinoUnit的东西 – http://code.google.com/p/rhinounit
另请参阅Dojo Object Harness(DOH)unit testing框架http://dojotoolkit.org/reference-guide/util/doh.html
在这里看一个类似的问题,可以给你一个关于如何为TDD的JavaScript的unit testing工具的TDD的想法
它不再被积极维护,但我仍然很满意JSUnit的Javascriptunit testing: https : //github.com/pivotal/jsunit
它包括一个可以在浏览器中运行的HTML / Javascript框架,以及一个可以从ant调用的基于java的testing运行器。
要并行testing多个浏览器,您需要Selenium Grid。 请看这里: http : //selenium-grid.seleniumhq.org/step_by_step_installation_instructions_for_windows.html一步一步的说明如何使用它。
到目前为止,我还没有使用它,它仍然处于testing阶段,但FuncUnit声明自己是“基于qUnit,Selenium和jQuery的functiontesting套件”。
还有一个信息图解释了它是如何工作的
也许这是你想要的东西? github回购似乎相当活跃。
你应该考虑crossbrowsertesting.com提供的function(这不是免费的)。 对于jstesting,试试JsUnit(http://www.jsunit.net/)。;
从其主页引用
JsUnit是客户端(浏览器内)JavaScript的unit testing框架。 它本质上是JUnit对JavaScript的一个端口。 还包括一个在多个浏览器和运行不同操作系统的多台机器上自动执行testing的平台。
正如人们已经这样说,你应该使用JsTestDriver。 它有它自己的testing系统,但你可以使用其他testing库,例如Jasmine( http://pivotal.github.com/jasmine/ )。 您可以在这里find适用于JsTestDriver的适配器列表: http : //code.google.com/p/js-test-driver/wiki/XUnitCompatibility
我会去qunit ,这是jQuery使用的。 我已经在很多桌面浏览器以及iPhone和Android手机上运行了它。
有一些很好的教程 ,它可以很容易地集成到像js-test-driver这样的东西。 QUnit是在JUnit和所有其他xUnittesting框架(如PHPUnit)之后build模的,因此很容易获取API。
基本语法如下:
test("my first test", function() { var str = "hello"; equals( "hello", str, "Should be hello" ); });
它也看起来相当不错:
Selenium或SauceLabs等不是unit testing。 他们是function/集成testing解决scheme。
你需要像DOM一样抽象你的外部用法来unit testingjavascript。
编写你的testing,以便他们可以使用任何外部库,如jQuery的configuration。 所以,你可以unit testing你的逻辑,而不用接触任何外部的东西,你也可以testing跨浏览器的testing。