Я использовал qunit для написания серии тестов для кода javascript, который у меня есть. Прямо сейчас по какой-то причине будет запущен первый тест в моем списке, а затем будет запущен ПОСЛЕДНИЙ тест в списке, за которым следуют 2-й до последнего, 3-й до последнего, 4-й до последнего и т. д. Для моих тестов очень важно, чтобы все работает в том порядке, в котором они у меня есть. Я попытался отключить эту опцию, когда qunit сначала запускает тесты, которые не прошли в прошлый раз, но он все еще делает это. Есть ли способ исправить это?
Получение QUnit для запуска тестов по порядку
Ответы (2)
Во-первых, выясните, почему ваши тесты ДОЛЖНЫ выполняться в определенном порядке. Весь смысл модульного тестирования заключается в том, что тесты являются атомарными, и должна быть возможность запускать их в любом порядке — если ваш набор тестов не способен на это, вам нужно выяснить, почему, поскольку это может представлять более серьезную проблему.
Если вы не можете понять это, вам может потребоваться разбить набор тестов на более мелкие группы тестов, пока вы не найдете те, которые вызывают проблему.
редактировать: эта ссылка найдена по адресу http://www.educatedguesswork.org/2011/06/curse_you_qunit_1.html. По-видимому, добавление этого в ваш набор тестов поможет QUnit.config.reorder = false;
Возможно, вы могли бы подумать о том, чтобы поместить код, выполняющий все основные вычисления, в функцию, которая имеет в начале тест, проверяющий, были ли уже выполнены вычисления. Если вычисление не выполнено, выполните вычисление и сохраните результат где-нибудь. Если вычисление уже было выполнено, просто верните результаты. Таким образом, вы можете иметь одно вычисление для всех тестов, но при этом быть независимыми от порядка выполнения тестов.
Я могу относиться к проблемам трудоемких вычислений при модульном тестировании, но для группы тестирования крайне важно иметь возможность взять любой модульный тест и выполнить его как независимый автономный тест. Это особенно верно, когда возникает критическая проблема, которую необходимо решать конкретно.