Использование Memory Disk для модульных тестов ввода / вывода - PullRequest
2 голосов
/ 14 марта 2012

У меня есть следующая настройка в C # - у меня есть компонент, который получает путь к папке в конструкторе, и позже, некоторые огромные данные обрабатываются им и записываются на диск в виде нескольких файлов (порядка 1Гб) , очень интенсивно). При извлечении данные считываются (также интенсивно ввод-вывод), и мой модульный тест (объединение с MOQ, настроенный как фактически компонентный тест) сравнивает их с исходными данными. Проблема - модульное тестирование занимает несколько минут, что довольно раздражает. Я подумал, есть ли способ создать RAMDrive или RAMFolder в настройке тестового устройства, и удалить его в сносе. Я не могу использовать файлы памяти или потоки памяти, так как за пределами компонента никто не должен знать, какие файлы используются точно.

Есть идеи?

С уважением, Petr

Ответы [ 3 ]

1 голос
/ 14 марта 2012
  1. Получить SSD
  2. Урезать модульный тест
  3. Абстрактный доступ к хранилищу в отдельно тестируемом субкомпоненте ... и затем смоделировать, используя массив в памяти для симуляции файлов.

Три выполнимых способа сделать это.Я бы попробовал пойти с 3 - и все равно купить SSD.SSD отлично подходит для множества небольших операций ввода-вывода, и вы знаете, что такое компиляция (даже C # - тонны исходных файлов).

0 голосов
/ 14 марта 2012

Я бы попытался получить бизнес-объект с двумя apis, один с именами файлов (для существующего кода) и один с потоками.

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

юнит-тесты могут использовать stream-api (то есть поток памяти), в то время как система wole работает с файловыми потоками через fileapi

0 голосов
/ 14 марта 2012

Зачем вам нужно сносить его после теста? Почему бы просто не очистить все файлы после ваших юнит-тестов в ClassCleanup?

Как программное обеспечение RAMdisk, вы можете проверить RAMDisk 11 на http://www.superspeed.com/desktop/ramdisk.php.

Вы, конечно, могли бы также высмеивать фактическое написание файлов, не так ли?

...