jasmine-maven-plugin和require-js会导致路径问题

时间:2012-03-28 09:31:46

标签: javascript maven requirejs jasmine

我正在使用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中   (系统找不到指定的路径)

有没有想过要解决或配置的人?

3 个答案:

答案 0 :(得分:3)

我遇到了同样的问题: java.io.FileNotFoundException

使用requireJS和jasmine

但您不必使用maven-resources-plugin并将js文件破解到第二个输出目录。

我使用'srcDirectoryName'

您可以在https://github.com/searls/jasmine-maven-plugin/blob/master/src/main/java/com/github/searls/jasmine/mojo/AbstractJasmineMojo.java

找到所有可能的参数

以及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