2009-07-10 3 views
8

Для Javascript существуют некоторые тестовые рамки, такие как JSUnit или js-test-driver. Они в порядке, но они запускают тесты в браузере. Это нормально, особенно для проверки того, что ваш webapp работает в разных браузерах. Но на сервере непрерывной интеграции нет установленной оконной системы (и без браузера). Итак, есть ли способ запустить тесты без использования браузера? Лучше всего было бы использовать одну из существующих фреймворков, чтобы разработчики могли локально запускать тесты в своих браузерах, а система непрерывной интеграции запускает их без браузера.Какая тестовая среда для Javascript поддерживает тестирование без браузера?

+2

Это не ответ на ваш вопрос, но я бы предложил проверить вещь в реальном браузере. Это то, что будут видеть конечные пользователи, поэтому это нужно протестировать. На какой ОС установлен CI? –

+1

CI установлен на linux, но без X. Поэтому тестирование в браузере невозможно на CI-сервере. В браузерах он все равно будет протестирован разработчиками, но я хочу добавить тесты также в CI. – Mnementh

+0

Как насчет phantomjs? – ShrekOverflow

ответ

1

Вы можете быть заинтересованы в HtmlUnit, которая используется несколько рамок UI-тестирования, как WebDriver

1

jsTest может быть запущена в командной строке или в виде плагина eclipse.

Однако будьте осторожны, вы не получите покрытие 100% кода с помощью такого инструмента, если вам нужно поддерживать несколько браузеров. Каждый браузер реализует JavaScript по-разному (то есть: IE). Таким образом, единственный способ полностью протестировать ваш JavaScript - запустить тесты во всех поддерживаемых браузерах.

+0

Я не уверен, почему вы говорите, что не можете получить 100% -ный охват. Покрытие означает, что код запускается. Проблема, которую вы указываете (совместимость между браузерами), заключается в том, что один и тот же код может означать (и делать) разные вещи в разных средах исполнения. Следствием этого является то, что если у вас есть 100% -ый охват в Firefox, это может не рассказать вам все, что вы хотите знать о поведении кода в IE. Вы можете получить 100% -ый охват, не получив 100% знаний.(И даже 100% охват во всех браузерах - это не то же самое, что 100% -ное знание, но это другая проблема.) –

+0

Это было 5 лет назад. Тогда веб-разработка была заполнена зависящими от браузера бифуркациями, поскольку API были настолько разрозненными. Если вы запустили свой тест в Firefox, какой-то из командной строки и т. Д., Вы не смогли выполнить _any_ кода в другой ветке, которая обрабатывала другой браузер. Поскольку вы оставляете половину ваших филиалов непроверенными, вы не можете требовать 100% покрытия кода. В наши дни пейзаж много отличается. Я, честно говоря, не могу вспомнить последний раз, когда мне приходилось делать разные вещи для разных браузеров. – geowa4

0

Я считаю, что Canoo WebTest можно запускать без браузера. Это в основном рамочный интерфейс тестирования, но может быть использован для тестирования JavaScript, а также:

http://webtest.canoo.com/

0

JSpec может быть работать без браузера (используя Rhino). Но также поддерживается запуск в браузерах.

http://visionmedia.github.com/jspec/

Он также обеспечивает хороший синтаксис спецификации стиля:

describe 'ShoppingCart' 
    describe 'addProduct' 
    it 'should add a product' 
     cart.addProduct('cookie') 
     cart.addProduct('icecream') 
     cart.should.have 2, 'products' 
    end 
    end 
end 

Выполнив все модульные тесты вне браузера, вы также получаете преимущество обеспечения разделения вашей логики от HTML/презентационный уровень (полезен для веб-приложений, возможно, излишний для небольших скриптов).

+0

Проект jspec мертв и, прежде чем их сайт исчезнет целиком, вместо этого рекомендовал Жасмин. http://stackoverflow.com/questions/3912312/jspec-no-longer-supported –

0

Жасмин будет работать вполне счастливо внутри node.js.

1

Взгляните на следующие статьи:

Кроме того, у нас есть сервер jsTestDriver работает с несколькими веб-браузеров (как удаленной консоли бегунами) как ресурс для Jenkins, поэтому вы можете иметь CI с тестированием в веб-браузерах.

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