MS test заказанный тест - Как я могу заставить его работать простым и понятным способом? - PullRequest
2 голосов
/ 30 ноября 2011

Я очень подавлен MS Test.Я хотел бы создать интеграционный тест, чтобы я мог проверить, выполняет ли мой репозиторий все операции CRUD, как ожидалось.Для этого я создал 3 метода испытаний

  1. Где я добавляю данные и читаю их снова -> тест завершается успешно, если вставленный элемент может быть извлечен
  2. Где я обновляю вставленный элемент и читаю его снова -> проверка завершается успешно, если у извлеченного элемента есть тот же ключ, но изменились данные
  3. Где я удаляю вставленный элемент и пытаюсь прочитать его снова -> проверка успешно завершается, если элемент не может быть извлечен.

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

Первая идея состояла в том, чтобы добавить один метод теста, который выполняет все, но если тестНе удается, чем в третьей части. Я не могу увидеть, что другие преуспели.

Вот почему я попробовал упорядоченный тест, где можно было бы сказать, в каком порядке методы вызываются фреймворком.Это работает, пока я использую тестовое представление, которое я обычно избегаю.Я обычно использую control + R + T, но при этом каждый метод также выполняется в произвольном порядке, а не в определенном.И последнее, но не менее важное: мне кажется, что мне нужно выполнить дополнительную работу, если я хочу выполнить упорядоченный тест на нашей сборочной машине.

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

Итак, мои настоящие вопросы: что я делаю не так?Почему Microsoft добавляет такую ​​странную функциональность в свой инструмент?Почему бы не сказать: [TestMethod ("CRUD", 1)] и использовать параметры атрибута для определения групп и порядка.

Мне кажется, что Microsoft (снова) идет трудным путем в MS Test длячто-то, что можно сделать очень просто.

Спасибо за помощь.

1 Ответ

1 голос
/ 30 ноября 2011

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

Чтобы объяснить, что я имею в виду, представьте, что у вас был один тест, который был выполнен первым, и у этого теста был побочный эффект создания группы файлов в определенном каталоге.Затем у вас был второй тест, который использовал эти файлы.Теперь заказ не просто удобство - это необходимость.Второй тест не имеет смысла сам по себе.Я полагаю, что авторы упряжи утверждают, что это должен быть либо один тест, либо (предпочтительно), чтобы вы не использовали пакет модульного тестирования для выполнения подобных тестов.Я не знаю, что ты делаешь что-то не так.Я думаю, что вы просто пытаетесь использовать инструмент так, как этого не хотели авторы.Лично, если бы я писал набор интеграционных тестов для операций CRUD, я бы вообще не использовал MS Test или инфраструктуру модульного тестирования.Я бы либо использовал инструмент, предназначенный для таких вещей, либо написал бы небольшое приложение, которое использовало бы ваши DLL-библиотеки для доступа к данным, выполняя операции CRUD и сообщая о результатах.

Ваша собственная домашняя утилита может быть включена в ваше решение для быстрого запуска в качестве запускаемого проекта, запускаемого вашей сборкой и т. Д. Если вы хотите потратить на него немного дополнительного времени, вы можете даже сгенерировать егонебольшой отчет или приведите его вывод в соответствие с тем же выводом, что и MS Test (эти тестовые файлы XML).

...