【发布时间】:2012-11-24 03:06:24
【问题描述】:
在我的 JS 测试驱动程序配置文件中,我将单元测试排除在代码覆盖率计算之外,方法是将它们放在 test 而不是 load 下。
但是,我不能为依赖项执行此操作,例如 Underscore.js 的 jQuery,因为它们需要在我的代码之前加载。
有没有办法解决这个问题?还是我只是处理缓慢的代码覆盖运行和统计数据混乱?
【问题讨论】:
在我的 JS 测试驱动程序配置文件中,我将单元测试排除在代码覆盖率计算之外,方法是将它们放在 test 而不是 load 下。
但是,我不能为依赖项执行此操作,例如 Underscore.js 的 jQuery,因为它们需要在我的代码之前加载。
有没有办法解决这个问题?还是我只是处理缓慢的代码覆盖运行和统计数据混乱?
【问题讨论】:
解决方案 1:
正如 Greg 所说,有一种使用“args”参数的方法,但不幸的是,您必须指定完整路径,如下所示(假设 Windows):
plugin:
- name: "coverage"
jar: "lib/coverage-1.3.2.jar"
module: "com.google.jstestdriver.coverage.CoverageModule"
#Here put the files that have to be ignored by coverage. Non-existent files do not harm.
args: "
D:\\apache\\htdocs\\XTIME\\js\\lib\\ext-all.js,
D:\\apache\\htdocs\\XTIME\\js\\lib\\jquery-1.7.2.min.js,
"
对于 linux 文件系统,您不必使用双斜杠。
解决方案 2:
this thread 上还有一个 1.3.5 的修补 jar,允许您排除与正则表达式匹配的文件,因此您将拥有:
plugin:
- name: "coverage"
jar: "lib/coverage-1.3.5.serve-patch.jar" #this patched jar allows to use excludesRegex
module: "com.google.jstestdriver.coverage.CoverageModule"
args: "excludesRegex: /js/lib/.*\\.js$"
/js/lib/.*\.js$ 正则表达式的意思是“排除位于js/lib 内的所有 .js 文件”。 (有了这个补丁,你就不用担心 Windows 反斜杠了)
我更喜欢这种方式,因为它是可移植的,因为它不依赖于您的应用程序的特定路径。
您可以下载补丁版本here(在线程中查找评论11)。
希望这会有所帮助。
干杯,来自拉巴斯-玻利维亚
【讨论】:
您可以通过在配置中的“args”下指定库来将库排除在代码覆盖范围之外。但是,请注意路径必须是绝对的。在撰写本文时,最新的 jsTestDriver 代码覆盖插件只会在路径是绝对路径时忽略库。
见here。
【讨论】: