Гаразд - ця публікація тут допомогла мені зрозуміти, що мені потрібно було робити БЕЗ необхідності додавати елементи у .testsettings
файл вручну .
Крок 1 - Увімкніть DeploymentItem
атрибут MS Test .
Спочатку нам потрібно увімкнути / увімкнути DeploymentItem
атрибут.
Перейти до ТЕСТУ -> РЕДАКТУВАТИ НАЛАШТУВАННЯ ТЕСТУ -> Поточні активні налаштування .. напр. :: Локальний (local.testsettings)
Тепер перейдіть до DEPLOYMENT та переконайтеся, що Enable Deployment встановлено галочку ON. (За замовчуванням це вимкнено).
Крок 2 - Перевірте властивості файлу
Тепер нам потрібно переконатися, що файл, який ви хочете використовувати в модульному тесті, налаштовано для копіювання в каталог BIN під час компіляції. Тільки файли, що знаходяться в каталозі BIN, можуть бути використані для тестування модуля MS Test. Чому? Оскільки кожного разу, коли запускається тест MS, він повинен зробити копію джерел ... і це означає, що робить копію поточних файлів каталогів BIN (для поточної конфігурації).
Наприклад ... Поточна конфігурація налагоджена (на відміну від Release).
Потім я додаю свій файл ... (взяти до відома структуру папок у проекті) ...
а потім переконайтесь, що цей файл ЗАВЖДИ копіюється в каталог bin під час компіляції проекту.
ПІДКАЗКА: Копіювати Завжди також буде працювати, але завжди копіюйте вихідний файл над цільовим файлом .. навіть якщо вони ідентичні. Ось чому я віддаю перевагу копіюванню, якщо новіше ... але все, що плаває на вашому човні
Добре, пані та панове - все ще зі мною? Wikid.
Коли ми компілюємо, файл тепер повинен існувати в директорії Bin ....
Крок 3 - Тепер використовуйте атрибут DeploymentItem
Добре, тепер ми нарешті можемо використовувати DeploymentItem
атрибут у нашому коді. Коли ми це робимо, це повідомляє MSTest скопіювати файл (з розташування щодо каталогу bin) в новий каталог MS Test ...
[TestMethod]
[DeploymentItem(@"Test Data\100LogEntries.txt", "Test Data")]
public void Parsing100LogFileEntriesReturnsANewParsedLogEntriesWith100Items()
{
// Arrange.
const string fileName = @"Test Data\100LogEntries.txt";
ILogEntryService logEntryService = new PunkBusterLogEntryService();
// Act.
var parsedLogEntries = logEntryService.ParseLogFile(fileName, 0);
// Assert.
Assert.IsNotNull(parsedLogEntries);
Assert.AreEqual(100, parsedLogEntries.LogEntries.Count);
// Snipped the remaining asserts to cut back on wasting your time.
}
Тож давайте розіб’ємо це ..
[TestMethod]
Ми всі знаємо, що це таке.
[DeploymentItem(@"Test Data\100LogEntries.txt", "Test Data")]
Починаючи з каталогу bin, перейдіть у Test Data
папку та скопіюйте 100LogEntries.txt
файл у цільову папку Test Data
, у кореневий вихідний каталог MS Test, який MS Test створює під час запуску кожного тесту.
Ось так виглядає моя структура вихідних папок. (Вибачте за все безлад ...)
і вуаля! у нас є файли розгортання, програмно.
ПОРАДА No2 - якщо ви не використовуєте аргумент 2-го рядка в DeploymentItem
атрибуті, тоді файл буде скопійовано до кореневої папки OUT поточного тесту MS.
const string fileName = @"Test Data\100LogEntries.txt";
Тепер шлях до файлу відносно OUT
папки для поточного тесту MS. Таким чином, я явно сказав розгорнути файл у каталозі під назвою Test Data
... тому мені потрібно переконатися, що я правильно посилаюся на це у своєму коді, коли хочу прочитати у файлі.
Тільки для підтвердження -> повний шлях до цього імені файлу перекладається приблизно так C:\lots of blah blah blah\My Solution\TestResults\PureKrome_PUREKROME-PC 2011-01-05 23_41_23\Out\Test Data
.. для цього поточного тесту MS.
HTH.
Тепер майте малюнок Єдинорога, щоб так багато читати :)