Что означает атрибут DeploymentItem? - PullRequest
5 голосов
/ 18 октября 2010

Допустим, у нас есть короткая программа:

namespace ConsoleTryIt
{
    static class Program
    {
        static void Main(string[] args)
        {
            var sum = Add(1, 2);
        }

        private static int Add(int p, int p2)
        {
            return p + p2;
        }
    }
}

При создании класса модульного теста для этого класса Visual Studio создает метод теста с атрибутом DeploymentItem.Я прочитал MSDN об этом атрибуте, но все еще не понимаю, что он означает.

/// <summary>
///A test for Add
///</summary>
[TestMethod()]
[DeploymentItem("ConsoleTryIt.exe")]
public void AddTest()
{
    var expected = 122;
    var actual = Program_Accessor.Add(1, 121);
    Assert.AreEqual(expected, actual);
}

Если у вас есть идея, пожалуйста, поделитесь!

Редактировать

Спасибо всем за ваши ответы.Таким образом, идея состоит в том, чтобы скопировать элемент, указанный в аргументе, в папку среды тестирования.Мой следующий вопрос: зачем этому методу нужен этот атрибут, а другим нет?
Полагаю, он связан с закрытыми членами тестируемого класса, но мне ничего не понятно.

Пожалуйста, продолжайте обсуждение.

Ответы [ 4 ]

9 голосов
/ 18 октября 2010

Указывает файлы, которые требуются для конкретного теста.Тестовая система создает новый каталог, из которого запускаются тесты.С помощью этого атрибута вы можете заставить тестовую систему копировать определенные файлы в этот новый каталог.

1 голос
/ 18 октября 2010

Это означает, что элемент копируется в папку «TestResults \ Out» и является в основном артефактом / необходимым элементом для запуска теста. Таким образом, он хранится отдельно от каталога bin и не перезаписывается.
Это особенно полезно при запуске тестов в разных средах (сборочный сервер, без жестко заданных путей ...) и, конечно, необходимо сделать тесты повторяемыми.

НТН.
Thomas

1 голос
/ 18 октября 2010

Используются файлы развертывания, которые не обязательно присутствуют в каталоге Output в папке, используемой для этого конкретного TestRun.

В приведенном выше примере тестовая среда проверяет, что "consoleTryIt.exe"скопировано (и, следовательно, присутствует) в тестовую папку.Если файл не найден, тест даже не запускается, и возвращается исключение FileNotFound.

0 голосов
/ 18 октября 2010
  • Обеспечивает копирование файлов, необходимых для теста, в папку, в которой MSTest выполняет свои тесты TestResults \ Out.

  • Для файлов в вашем решении должна быть установлена ​​опция «Всегда копировать», чтобы файлы сначала копировались в папку bin, а затем в папку MSTest.

  • Убедитесь, что у вас установлен флажок «Включить развертывание» в testrunconfig.

...