我目前正在尝试在Web服务器模式下运行JSCover来确定在PhantomJS无头浏览器中执行的Jasmine测试的覆盖范围。我也使用grunt + nodejs来启动测试。无法让JSCover和PhantomJS在Cloudbees上运行Jasmine测试
我在gruntfile启动JSCover服务器,并执行phantomJS使用的代码是:
// Start JSCover Server
var childProcess = require('child_process'),
var JSCOVER_PORT = "43287";
var JAVA_HOME = process.env.JAVA_HOME;
var jsCoverChildArgs = [
"-jar", "src/js/test/tools/JSCover-all.jar",
"-ws",
"--branch",
"--port="+JSCOVER_PORT,
"--document-root=./",
"--report-dir=target/",
"--no-instrument=src/js/lib/",
"--no-instrument=src/js/test/",
"--no-instrument=src/js/test/lib/"
];
var jsCoverProc = childProcess.spawn(JAVA_HOME + "/bin/java", jsCoverChildArgs);
// Start PhantomJS
var phantomjs = require('phantomjs'),
var binPath = phantomjs.path,
var childArgs = [
'src/js/test/lib/phantomjs_jasminexml_runner.js',
'http://localhost:'+JSCOVER_PORT+'/src/js/test/SpecRunner.html',
'target/surefire-reports'
];
runner = childProcess.execFile(binPath, childArgs);
runner.on('exit', function (code) {
// Tests have finished, so clean up the process
var success = (code === 0) ? true : false;
jsCoverProc.kill(); // kill the JSCover server now that we are done with it
done(success);
});
然而,当我运行詹金斯节点上的Web服务器中的CloudBees,然后对其运行phantomjs,我得到下面的错误之一:
有些测试开始运行,但随后的进程失败:
A spec : should be able to have a mock lo-dash ... Warning: Task "test" failed. Use --force to continue. Aborted due to warnings. Build step 'Execute shell' marked build as failure Recording test results Finished: FAILURE
- 个
PhantomJS是无法访问的服务器JSCover:
Running "test" task phantomjs> Could not load 'http://127.0.0.1:43287/src/js/test/SpecRunner.html'. Warning: Task "test" failed. Use --force to continue.
对于第二个错误,我试图使用不同的端口,并且我设置的主机名(例如端口为127.0.0.1或本地主机,端口为4327,43287等)。这些端口并没有在构建时动态设置 - 我已经在我的grunt脚本中对它们进行了硬编码。
有关为什么上述错误可能会发生,或者为什么我在运行和访问Cloudbees Jenkins节点上的JSCover服务器(但从未在本地计算机上)出现问题的任何想法?
有配置jscover过程记录的方法吗?我不知道这是由低速单核并发问题建立的奴隶(相对于本地计算机),phantomJS开始运行测试,但JSCover服务器尚未完全启动 –