как написать тест, который требует массивного теста - PullRequest
0 голосов
/ 04 сентября 2018

Допустим, у меня есть список, в котором около 210000 английских слов.

  • Мне нужно использовать все эти 210000 слов в качестве контрольного примера.
  • Мне нужно убедиться, что все слова в этом списке покрыты каждый раз, когда я запускаю тест.

Вопрос в том, как лучше всего хранить эти слова в моем тесте?

Должен ли я сохранить все эти слова в срезе (будет ли это слишком большой срез?) Или я должен сохранить эти слова во внешнем файле (например, words.txt) и загружать файл построчно при необходимости?

1 Ответ

0 голосов
/ 04 сентября 2018

Тестовые данные обычно хранятся в каталоге с именем testdata, чтобы отделить их от других исходных кодов или файлов данных (см. Документацию по команде go help test). Инструмент go игнорирует содержимое в этом каталоге.

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

Редактировать : Что касается лучших практик, иногда лучше хранить тестовые данные в testdata, даже если они невелики. Например, мне иногда нужно использовать несколько коротких фрагментов JSON в тестовых случаях и, возможно, использовать их более одного раза. Хранение их в файлах с соответствующими именами в подкаталоге testdata может быть более читабельным, чем засорение кода Go с помощью набора фрагментов JSON.

Небольшая потеря производительности, как правило, не является проблемой в тестах. Какой бы метод ни облегчал понимание кода, он может стать «лучшей практикой».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...