Возможно ли иметь динамические элементы развертывания на лету? - PullRequest
1 голос
/ 16 июля 2009

Я хочу написать тесты для проверки наличия (и других вещей) определенных файлов, которые будут поставляться с нашим проектом.

Это то, что у меня сейчас есть:

[DeploymentItem("1.pdf")]
[DeploymentItem("2.pdf")]    
public class DoFilesExist
{
    List<string> _Files;

    public DoFilesExist()
    {
        _Files = new List<string>();
        _Files.Add("1.pdf");
        _Files.Add("2.pdf");
    }

    delegate void fileTest(string fileName);

    void Map(fileTest test)
    {
        foreach (string file in _Files)
        {
            test(file);
        }            
    }

    [TestMethod]
    public void TestExists()
    {
        Map( x => Assert.IsTrue(File.Exists(x), x + " doesn't exist") );
    }
}

Как видите, когда я хочу добавить другой файл для тестирования, я должен добавить его в [DeploymentItem] и список _Files

Есть ли способ динамического изменения элементов DeploymentItems? Или захватить их во время выполнения. Вероятно, у меня будет более 30 файлов, и мне не нужны два списка.

Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 16 июля 2009

Похоже, что вы в основном проверяете, работает ли [DeploymentItem] ... в конце концов - не [DeploymentItem] определяет ваше фактическое развертывание.

Лично это то, что я презираю в MSTest; Проекты .NET уже имеют способ определения данных развертывания - проект! Вводя второй метод, он вводит как дублирование, так и риск. Одна из причин, по которой я использую NUnit вместо MSTest, хотя у меня есть лицензия VSTS </rant>.

По вопросу; Вы могли бы использовать отражение, чтобы посмотреть на маркеры DeploymentItem, но я действительно не уверен, что это тестирование, кроме самого тестового фреймворка ...

0 голосов
/ 13 июля 2012

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

[DeploymentItem("files\"]
public class Test
{
}

Возможно, вам потребуется пометить каждый файл также CopyAlways - подробности см. В основном вопросе.

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