2012-03-27 4 views
8

Я использовал qunit, чтобы написать серию тестов для кода javascript, который у меня есть. Прямо сейчас по какой-то причине первый тест в моем списке будет запущен, а затем пройдет тест LAST в списке, за которым последуют 2-й, 3-й, последний, 4-й и последний, и т.д. ... Для моих тестов очень важно, все работает в том порядке, в котором они у меня. Я попытался отключить эту опцию, когда qunit запускает тесты, которые не выполнялись в прошлый раз, но он все еще делает это. Есть ли способ исправить это?Получение QUnit для запуска тестов в порядке

ответ

11

Сначала выясните, почему ваши тесты ДОЛЖНЫ запускаться в определенном порядке. Вся цель модульного тестирования заключается в том, что тесты являются атомарными, и их можно запускать в любом порядке - если ваш набор тестов не способен на это, вам нужно выяснить, почему, поскольку это может представлять большую проблему.

Если вы не можете понять это, вам может потребоваться разорвать ваш тестовый пакет на более мелкие группы тестов, пока вы не найдете тот, который вызывает проблему.

Редактировать: Эта ссылка была найдена http://www.educatedguesswork.org/2011/06/curse_you_qunit_1.html. По-видимому, добавление этого в ваш тестовый пакет поможет QUnit.config.reorder = false;

+0

Нет, я знаю почему. Повысить эффективность. (Я не хочу вдаваться в подробности, но на данный момент каждый тест занимает очень много времени, и мне нужно сделать все как можно более упорядоченным). Некоторые тесты полагаются на результаты предыдущего теста. Я могу сделать все атомарным, но тогда все занимает еще больше времени, чем это уже происходит. Как только я попаду туда, где время не имеет значения, я могу вернуться к атомной модели, но пока я хочу, чтобы мои тесты выполнялись в том порядке, в котором я написал их для повышения эффективности. – user1028497

+2

@ user1028497 «Некоторые тесты полагаются на результаты предыдущего теста», тогда у вас нет атомарности - вы должны подготовить то, что необходимо для теста в самом тесте. – unludo

+0

Я делал это так. Но в это время мне нужна эффективность, и это был лучший способ сделать что-то. Я не хочу все объяснять, но достаточно сказать, что в это время мне нужны тесты для запуска в том порядке, в котором они у меня. – user1028497

0

Возможно, вы могли бы рассмотреть возможность размещения кода, который выполняет каждое крупное вычисление, в функции, которая имеет тест в начале, который проверяет, выполнено ли вычисление. Если вычисление не выполняется, выполните вычисление и сохраните результат где-нибудь. Если вычисление уже выполнено, просто верните результаты. Таким образом, вы можете иметь единое вычисление для всех тестов, но все же быть автономным по порядку, в котором выполняются тесты.

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

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