2013-06-05 2 views
1

Я пытаюсь настроить некоторые модульные тесты javascript, используя jstestrunner и qunit, в Maven. Я работал над многими тестовыми модулями Java, включая настройку инфраструктуры, но я новичок в этом для Javascript. Информация о настройке на страницах jstestrunner пропускает критически важную информацию. Я бы спросил об этом в списке рассылки jstestrunner, но ссылки на их списки рассылки на их странице кода неактивны, и я не могу найти способ связаться с руководителем Dev, Кристофером Хантом, за исключением, возможно, подачи JIRA, который кажется неуместным.реальные примеры использования qunit и jstestrunner?

Страница использования рассказывает о настройке phantomjs, но ничего не говорит о интерфейсе qunit. Я предполагаю, что это, вероятно, очевидно для людей, которые часто использовали qunit.

Я создал корневую тестовую оболочку JUnit, но я не вижу, как настроить недостающую ссылку на qunit.

+0

делает это так, вопрос вам помочь? http://stackoverflow.com/questions/8525311/better-way-to-integrate-maven-qunit-phantomjs?rq=1 – Steen

+0

Это более полезный фон, да. Это также подтверждает мой вывод о том, что модульное тестирование Javascript по-прежнему очень много на этапе становления. –

ответ

0

Я выполнял некоторые тесты QUnit, используя QUnit, phantomjs, ant и модифицированную версию a qunit-runner. Сам код находится в проекте с закрытым исходным кодом, но суть этого заключается в том, что я вызываю ant test в файле build.xml только с одной целью, цель test.

Цель test target вызывает phantomjs с qunit-runner и некоторыми аргументами командной строки. Была задействована какая-то магия, например, предполагалось, что qunit-runner хочет package.json, из которого он вводит файлы, которые должны быть протестированы. Сами тесты передаются с использованием аргументов в файле сборки муравьев.

У меня есть отдельные тестовые файлы для каждого файла, который я хочу проверить, и каждый тестовый файл имеет как минимум одно определение module.

qunit-runner конструирует объекты конфигурации для qunit, вводит файлы, подлежащие тестированию, и содержит обратные вызовы для различных этапов процесса qunit, что позволяет мне построить jUnit look xml для подачи на страницу сервера сборки Jenkins.

Я согласен с вашим первоначальным заключением, что рамки модульного тестирования в мире JavaScript все еще находятся в зачаточном состоянии. Но, с другой стороны, JavaScript - очень податливый язык, и есть несколько соглашений о литье железа, чтобы покорить рамки тестирования. На других языках вы также не получите очень далеко, без какой-либо насмешливой структуры, чтобы пойти с модульной тестовой платформой.

0

Я просто получил базовую настройку и работал с помощью QUnit, PhantomJS и js-testrunner. Эта ссылка помогла некоторым: jstest-runner-sample-project.

Для конфигурации я использовал:

  1. JS-TestRunner 1.0.2
  2. QUnit 1.14.0
  3. PhantomJS v1.9.7
  4. сплетение Utils v1.5.7 (требуется JS-TestRunner)
  5. мол v8.1.15 (требуется JS-TestRunner)
  6. джексон v1.9.13 (требуемый причал)

Испытание требуется 4 файла:

  1. JUnit Java тестовую оболочку - FirstTest.Java
  2. HTML тест обертка для QUnit - firstTest.html
  3. JavaScript-файл, чтобы проверить - tests.js
  4. конфигурации log4j (стандартная, базовая конфигурация)

Вот четыре файла, которые я использовал для этого основной тест:

FirstTest.java:

package delta; 

import org.codehaus.jstestrunner.junit.JSTestSuiteRunner; 
import org.junit.runner.RunWith; 

@RunWith(JSTestSuiteRunner.class) 
@JSTestSuiteRunner.Include(value="firstTest.html") 
@JSTestSuiteRunner.ResourceBase({ "src-web/delta", "../lib" }) 
public class FirstTest { 
} 

firstTest.html:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="ISO-8859-1"> 
    <script type="text/javascript" src="script/jquery-1.8.3.min.js"></script> 
    <script type="text/javascript" src="script/qunit-1.14.0.js"></script> 
    <link type="text/css" rel="stylesheet" href="css/qunit-1.14.0.css"/> 
    <script type="text/javascript" src="tests.js"></script> 
<title>firstTest</title> 
</head> 
<body> 
    <div id="qunit"></div> 
    <div id="qunit-fixture"></div> 
</body> 
</html> 

tests.js:

/** 
* Supports firstTest.html 
*/ 
(function() { 
    var val; 

    module("First Test", { 
    setup: function() { 
     val = 1 
    } 
    }); 

    test("hello test", function() { 
    ok(val == "1", "Passed!"); 
    }); 
}()); 

Я вызывается JUnit внутри Eclipse, который использует корневой каталог проекта, следовательно, требующий пути к тестовым файлам.

После настройки простой тест, который я могу выполнить их со стандартным Eclipse, Run As-> JUnit Test:

enter image description here

Смежные вопросы