我正在使用require-js来建立我的JavaScript项目中的依赖关系。我还使用jasmine编写BDD风格的测试用例,并使用jasmine-maven-plugin:1.1.0在无头模式下执行这些测试。
这是我的源项目结构。
这是我的webapp pom jasmine配置:
在maven构建过程中,所有js源文件都会被复制到target/jasmine/src目录下。引用我的main.js的runner.html位于target/jasmine下。
现在的问题是,我的require-js模块相对于main.js定义它们的依赖关系,在maven测试运行中,runner将它们视为相对于target/jasmine/runner.html。由于我的模块不知道(也不应该知道)额外的jasmine/src文件夹,所以我认为这是个问题。
当我运行mvn clean install时,我会收到以下错误信息:
“无法执行目标com.github.searls:jasmine-maven-plugin:1.1.0:test(default) on project mywebapp: jasmine-maven-plugin遇到了异常: java.lang.RuntimeException: org.openqa.selenium.WebDriverException: com.gargoylesoftware.htmlunit.ScriptException: 包装了com.gargoylesoftware.htmlunit.ScriptException: 包装了com.gargoylesoftware.htmlunit.ScriptException: 包装了com.gargoylesoftware.htmlunit.ScriptException: 包装了java.lang.RuntimeException: java.io.FileNotFoundException: C:\Jenkins\jobs\job1\workspace\mywebapp\target\jasmine\api\data-util.js(系统找不到指定的路径)”
有没有人有一些解决或配置的想法?
这是我的源项目结构。
project/
| src/main/javascript
| | api/*.js
| | main.js
| src/test/javascript
| | spec/*spec.js
这是我的webapp pom jasmine配置:
<plugin>
<groupId>com.github.searls</groupId>
<artifactId>jasmine-maven-plugin</artifactId>
<version>1.1.0</version>
<executions>
<execution>
<goals>
<goal>generateManualRunner</goal>
<goal>resources</goal>
<goal>testResources</goal>
<goal>test</goal>
<goal>preparePackage</goal>
</goals>
</execution>
</executions>
<configuration>
<specRunnerTemplate>REQUIRE_JS</specRunnerTemplate>
<scriptLoaderPath>lib/require-jquery.js</scriptLoaderPath>
<sourceIncludes>
<include>lib/require-jquery.js</include>
<include>lib/underscore.js</include>
<include>lib/backbone.js</include>
<include>lib/d3.js</include>
<include>lib/d3.layout.js</include>
<include>lib/bootstrap.js</include>
<include>main.js</include>
</sourceIncludes>
<preloadSources>
<source>lib/require-jquery.js</source>
<source>lib/underscore.js</source>
<source>lib/backbone.js</source>
<source>lib/d3.js</source>
<source>lib/d3.layout.js</source>
<source>lib/bootstrap.js</source>
<source>main.js</source>
</preloadSources>
<browserVersion>FIREFOX_3_6</browserVersion>
</configuration>
</plugin>
在maven构建过程中,所有js源文件都会被复制到target/jasmine/src目录下。引用我的main.js的runner.html位于target/jasmine下。
现在的问题是,我的require-js模块相对于main.js定义它们的依赖关系,在maven测试运行中,runner将它们视为相对于target/jasmine/runner.html。由于我的模块不知道(也不应该知道)额外的jasmine/src文件夹,所以我认为这是个问题。
当我运行mvn clean install时,我会收到以下错误信息:
“无法执行目标com.github.searls:jasmine-maven-plugin:1.1.0:test(default) on project mywebapp: jasmine-maven-plugin遇到了异常: java.lang.RuntimeException: org.openqa.selenium.WebDriverException: com.gargoylesoftware.htmlunit.ScriptException: 包装了com.gargoylesoftware.htmlunit.ScriptException: 包装了com.gargoylesoftware.htmlunit.ScriptException: 包装了com.gargoylesoftware.htmlunit.ScriptException: 包装了java.lang.RuntimeException: java.io.FileNotFoundException: C:\Jenkins\jobs\job1\workspace\mywebapp\target\jasmine\api\data-util.js(系统找不到指定的路径)”
有没有人有一些解决或配置的想法?