Я согласен, что jsunit похож на виноградную лозу. Мы только что закончили замену с помощью теста YUI.
Как и в примере с использованием qUnit, мы запускаем тесты с использованием Selenium. Мы проводим этот тест независимо от наших других тестов на селен просто потому, что у него нет зависимостей, которые испытывают обычные регрессионные тесты UI (например, развертывание приложения на сервере).
Для начала у нас есть базовый файл javascript, который включен во все наши тестовые html-файлы. Это позволяет настроить экземпляр YUI, тестовый бегун, объект YUI.Test.Suite, а также Test.Case. У него есть методы, к которым можно получить доступ через Selenium для запуска набора тестов, проверьте, работает ли тестовый бегун (результаты недоступны до тех пор, пока это не будет сделано) и получите результаты теста (мы выбрали формат JSON)
var yui_instance; //the YUI instance
var runner; //The YAHOO.Test.Runner
var Assert; //an instance of YAHOO.Test.Assert to save coding
var testSuite; //The YAHOO.Test.Suite that will get run.
/**
* Sets the required value for the name property on the given template, creates
* and returns a new YUI Test.Case object.
*
* @param template the template object containing all of the tests
*/
function setupTestCase(template) {
template.name = "jsTestCase";
var test_case = new yui_instance.Test.Case(template);
return test_case;
}
/**
* Sets up the test suite with a single test case using the given
* template.
*
* @param template the template object containing all of the tests
*/
function setupTestSuite(template) {
var test_case = setupTestCase(template);
testSuite = new yui_instance.Test.Suite("Bond JS Test Suite");
testSuite.add(test_case);
}
/**
* Runs the YAHOO.Test.Suite
*/
function runTestSuite() {
runner = yui_instance.Test.Runner;
Assert = yui_instance.Assert;
runner.clear();
runner.add(testSuite);
runner.run();
}
/**
* Used to see if the YAHOO.Test.Runner is still running. The
* test results are not available until it is done running.
*/
function isRunning() {
return runner.isRunning();
}
/**
* Gets the results from the YAHOO.Test.Runner
*/
function getTestResults() {
return runner.getResults(yui_instance.Test.Format.JSON);
}
Что касается селеновой стороны вещей, мы использовали параметризованный тест. Мы запускаем наши тесты как в IE, так и в FireFox в методе данных, анализируя результаты теста в список массивов объектов с каждым массивом, содержащим имя браузера, имя тестового файла, имя теста, результат (пропуск, отказ или игнорирование) и сообщение.
Фактический тест просто подтверждает результат теста. Если он не равен «pass», то он не проходит тест с сообщением, возвращенным из результата теста YUI.
@Parameters
public static List
Надеюсь, это полезно.