driver-test
单元测试和测试驱动开发(TDD)是当今的常见范例。 如果您是JavaScript开发人员,那么Google会创建并开源一个名为js-test-driver的出色工具,以帮助进行单元测试。 js-test-driver是秉承JUnit精神JavaScript单元测试运行程序,并将TDD引入JavaScript。
单元测试概述
如果您以前从未进行过任何单元测试,或者从未进入TDD领域,那么您可能会在问自己有什么好处。 关于该主题有很多详细的讨论,但我将介绍一些更重要的观点。
- 单元测试在回归测试中很有用。 您可以在更改代码后运行单元测试,并确保所有操作都像以前一样。 这对于不产生编译错误的动态语言(例如JavaScript)尤其重要。
- 项目越复杂/规模越大,更多的单元测试将为您带来投资回报
- 一整套的单元测试几乎和文档一样好。 有了一套好的单元测试,开发人员可以打开一个项目并开始运行/调试单元测试,以更好地理解系统。 在招募新的团队成员时,这非常有帮助。
- JUnit是一种流行的Java测试框架,在测试驱动开发的开发中至关重要。 许多现有的测试框架都遵循JUnit的命名约定和习惯用法。
配置系统
本教程将教您如何在集成开发环境(IDE)中设置断点和调试单元测试。 我们将专注于IntelliJ IDE。 本教程使用Microsoft Windows环境,但应通过调整环境变量在大多数操作系统上工作。 您还需要遵循以下说明:
- 下载并安装IntelliJ。 您可以从JetBrains网站下载IntelliJ。
- 如果尚未这样做,请下载并安装Java Development Kit(JDK) 。
- 在IntelliJ中,确保已安装js-test-driver插件。 如果您不知道如何执行此操作,请参阅JetBrains安装说明 。
- 下载最新的js-test-driver.jar 。 在撰写本文时,最新版本为1.3.5。 就本教程而言,请将jar保存到
C:devtoolswebjsjs-test-driver1.3.5js-test-driver-1.3.5.jar
。 - 添加以下环境变量,以便可以从命令行调用Java运行时。
JAVA_HOME=C:Program FilesJavajdk1.7.0_7 (or the location of your java install) PATH=%JAVA_HOME%bin;%PATH%
您可以通过打开命令提示符并键入
java
来验证安装。 如果正确安装了Java,则应该看到与以下屏幕快照类似的输出。 - 转到顶部菜单,然后单击
File | New Project
在IntelliJ中创建一个新项目。File | New Project
。 我已经使用C:projectsjs-test-driver
的Web模块创建了一个IntelliJ项目。 IntelliJ设置如下图所示。 - 在TDD和单元测试中,在生产代码和测试代码之间进行简洁明了的分隔始终是一个好主意。 创建目录
src
并在IntelliJ项目根目录中进行test
。 创建这些目录后,您的项目应类似于以下屏幕截图。
入门
- 我们将添加js-test-driver项目一部分的“ greeter”示例。 在
src
目录下创建一个名为greeter.js
的新JavaScript文件,并添加以下代码。myapp = {}; myapp.Greeter = function() {}; myapp.Greeter.prototype.greet = function(name) { return "Hello " + name + "!"; };
- 现在,我们将创建单元测试。 在
test
目录下创建相应JavaScript测试文件greetertest.js
,并添加以下代码。TestCase("GreeterTest", { setUp:function () { }, "test greet": function() { var greeter = new myapp.Greeter(); assertEquals("Hello World!", greeter.greet("World")); }, "test greet null": function() { var greeter = new myapp.Greeter(); assertNull(greeter.greet(null)); } });
- 在
greetertest.js
,IntelliJ将不理解TestCase
类,并将其突出显示为红色。 单击TestCase
,系统将提示您输入JetBrains的建议意图。 接下来,单击Add JsTestDriver assertion framework support
,如下图所示。 这样做将为js-test-driver添加IntelliJ IDE支持。 - 在项目的根目录中创建一个名为
js-test-driver.conf
的文件。 就本教程而言,完整路径为C:projectsjs-test-driverjs-test-driver.conf
。 将下图所示的信息添加到js-test-driver.conf
。 - 现在,让我们设置项目以使用断点进行调试。 在
testgreet()
函数内的文件greetertest.js
设置一个断点。 您可以通过单击左边距在IntelliJ中设置断点。 - 创建类型为
JavaScript Debug | JavaScript
的新IntelliJ Run / Debug配置。JavaScript Debug | JavaScript
如下所示。 - 更改以下值:
- 打开的URL:
http://localhost:9876/capture
- 展开目录
test
然后为远程URL输入http://localhost:9876/test/test
- 打开的URL:
- 到目前为止,我们已经看到IntelliJ提供了出色的js-test-driver集成。 要直接从IntelliJ内部启动js-test-driver服务器,请展开
JsTestDriver Server
菜单项,然后单击绿色的播放按钮,如下所示。 - 现在让我们从IntelliJ调试我们JavaScript! 启动我们之前创建的称为
JavascriptRemote
的调试配置。 您可以通过选择Run | Debug
从菜单中Run | Debug
。 将打开一个新的浏览器窗口,并加载js-test-driver远程控制台运行程序,如下所示。 - 接下来,打开一个新的命令提示符。
cd
到IntelliJ项目的根目录。 就本项目而言,该目录为C:projectsjs-test-driver
。 输入以下命令:java -jar C:devtoolswebjsjs-test-driver1.3.5js-test-driver-1.3.5.jar --tests all
- 片刻之后,IntelliJ应该在我们之前设置的断点处挂起。 现在可以使用局部变量,监视表达式和其他调试功能。 注意:在IntelliJ中,监视表达式中提供了智能代码完成功能!
结论
本文教您使用js-test-driver调试JavaScript单元测试。 现在,您应该能够在IntelliJ开发环境中设置断点。 最终,我希望这将有助于您为当前和将来的项目生产经过良好测试的软件。
- 下载本文示例的源代码 !
翻译自: https://www.sitepoint.com/debugging-unit-tests-using-js-test-driver/
driver-test