我正在使用require-js来模拟我的java脚本项目中的依赖项。我还使用jasmine编写BDD样式的测试用例和jasmine-maven-plugin:1.1.0来在无头模式下执行这些测试。
这是我的源项目结构
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测试运行中,运行器假定它们相对于target / jasmine / runner.html。由于我的模块不是(并且一定不)知道额外的jasmine / src文件夹,恕我直言,这是一个问题。
运行mvn clean install时收到以下错误消息:
无法执行目标 com.github.searls:jasmine-maven-plugin:1.1.0:测试(默认)项目 mywebapp:jasmine-maven-plugin遇到了 异常:java.lang.RuntimeException: org.openqa.selenium.WebDriverException: com.gargoylesoftware.htmlunit.ScriptException:Wrapped com.gargoylesoftware.htmlunit.ScriptException:Wrapped com.gargoylesoftware.htmlunit.ScriptException:Wrapped com.gargoylesoftware.htmlunit.ScriptException:Wrapped com.gargoylesoftware.htmlunit.ScriptException:Wrapped java.lang.RuntimeException:java.io.FileNotFoundException: C:\詹金斯\作业\ JOB1 \工作空间\ mywebapp \目标\茉莉\ API \数据util.js中 (系统找不到指定的路径)
有没有想过要解决或配置的人?
答案 0 :(得分:3)
我遇到了同样的问题: java.io.FileNotFoundException
使用requireJS和jasmine
但您不必使用maven-resources-plugin并将js文件破解到第二个输出目录。
我使用'srcDirectoryName'
找到所有可能的参数以及https://github.com/searls/jasmine-maven-plugin/tree/master/src/test/resources/examples
下的高级示例答案 1 :(得分:1)
与此同时,我通过配置maven-resources-plugin找到了解决方法或修复(不确定)
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-js-files</id>
<phase>generate-test-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/jasmine</outputDirectory>
<resources>
<resource>
<directory>src/main/javascript</directory>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/webapp</directory>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/test/webapp</directory>
<filtering>false</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
我将该配置放在我在测试期间激活的单独配置文件中。
答案 2 :(得分:0)
我看到你有lib / require-jquery.js,但你的文件树没有显示“lib”所在的位置。是相对于,但你没有。也许那是你的问题。我写了一篇快速文章,总结了我使用jasmine-maven-plugin和使用Require.js的经验。在其中我有我的pom.xml。我的pom.xml似乎比你的小,但插件对我来说很好。也许我的帖子会有所帮助。 Jasmine+Maven+Requirejs+Coverage