Заказанные тесты в рамках тестирования Windows Phone

Для запуска своих тестов я использую пакет nuget WP7Test. У меня есть два теста, для входа и оплаты операций. Мне нужно запустить тест для входа в систему и сохранить сеанс. Тогда мне нужно запустить тест оплаты. Как я знаю, по умолчанию тесты выполняются в случайном порядке.

Есть ли способ заставить их работать в моем порядке?

2 ответа

Решение

Я не верю в это. Подразумевается, что UnitTest предназначен для параллельной работы (или случайного в вашем случае). Это связано с тем, что система хочет изолировать каждую UT от песочницы, чтобы предотвратить то, что вы пытаетесь сделать (то есть другие юнит-тесты, влияющие на состояние системы).

Я бы порекомендовал иметь вспомогательную функцию "вход в систему", которая используется как для входа в систему, так и для оплаты UT. В основном это должно быть логикой, которую вы уже используете в тесте входа в систему, за исключением вызова assert.

К сожалению, WP7Test (если мне не изменяет память) действительно предназначен только для модульного тестирования.

Модульные тесты предназначены для разработки абсолютно минимальных фрагментов кода, а не для чтения или записи во внешний источник. (в вашем случае) есть несколько типов тестов, подходящих для этой ситуации, и на ум приходят интеграционные тесты...

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

Для быстрого Интеграционного Тестирования вы могли бы просто сделать это... (Люди собираются съесть это, но это будет служить вашим целям)

   [TestMethod]
   private void FunctionalityBeingTested_ConditionBeingTested_ExpectedOutput()
   {
        //input used by your first method
        //Method that writes to your session
        //input used by your second method
        var session = //Method that reads from your session
        //whatever assertions are appropriate for your expected results...
        //what you expect your results to be...
        Assert.IsNotNull(session);
        Assert.IsEqual(expected, session);
    }

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

Я настоятельно рекомендую, если вы еще этого не сделали, вам следует изучить Dependency Injection для тестирования приложений Windows Phone. Я сам разработчик для Windows Phone и могу сказать, что правильное тестирование - это все равно что вырывать зубы без него. (Интерфейсы, подделки, Moqs и т. Д. Являются удивительными инструментами для тестирования)

Другие вопросы по тегам