jasmine-maven-plugin и require-js приводят к проблемам с путями - PullRequest
4 голосов
/ 28 марта 2012

Я использую 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. Файл runner.html, который ссылается на мой main.js, находится в target / jasmine.

Теперь проблема в том, что мои модули require-js определяют свои зависимости относительно main.js, тогда как в тестовом прогоне maven бегун предполагает, что они относятся к target / jasmine / runner.html. Так как мои модули не знают (и не должны знать) о дополнительной папке jasmine / src, IMHO это проблема.

При запуске mvn clean install появляется следующее сообщение об ошибке:

Не удалось выполнить цель com.github.searls: jasmine-maven-plugin: 1.1.0: тест (по умолчанию) в проекте mywebapp: плагин jasmine-maven- исключение: 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: \ Дженкинс \ JOBS \ job1 \ рабочее пространство \ mywebapp \ целевых \ жасмин \ апи \ Data-util.js (Система не может найти указанный путь)

У кого-нибудь есть идея обойти или настроить это?

Ответы [ 3 ]

3 голосов
/ 10 декабря 2012

Я столкнулся с той же проблемой: java.io.FileNotFoundException

с requireJS и жасмином

но вам не нужно использовать 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 голос
/ 10 апреля 2012

Тем временем я нашел обходной путь или исправление (не уверен), настроив подключаемый модуль 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>

Я поместил эту конфигурацию в отдельный профиль, который яактивировать во время тестирования.

0 голосов
/ 04 августа 2012

Я вижу, что у вас есть lib / require-jquery.js, но ваше файловое дерево не показывает, где находится "lib".загружен относительно, но у вас его нет.Может быть, это твоя проблема.Я написал краткое сообщение, в котором кратко изложил свой опыт работы с плагином jasmine-maven-plugin и использовал Require.js.В нем у меня есть мой pom.xml.Мой pom.xml кажется немного меньше, чем ваш, но плагин у меня отлично работает.Возможно мой пост поможет. Жасмин + Maven + Requirejs + покрытие

...