Как удалить устаревшие элементы DeploymentItems в модульных тестах? - PullRequest
4 голосов
/ 05 мая 2011

рассмотрим следующий класс тестирования:

[TestClass]
public class ExampleTests
{
    [TestMethod]
    public void FileDoesNotExists()
    {
        Assert.IsFalse(System.IO.File.Exists("testfile.txt"));
    }

    [TestMethod]
    [DeploymentItem("testfile.txt")]
    public void FileExists()
    {
        Assert.IsTrue(System.IO.File.Exists("testfile.txt"));
    }

}

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

Я осмотрелся и поэкспериментировал с TestCleanupAttribute, но не смог найти надежный способ получить оба тестапройти, но кажется, что должен быть легкий способ сделать это.Существует ли такой метод?

update: Это кажется невозможным, поскольку среда тестирования предполагает, что DeploymentItems не изменяются после развертывания, и, следовательно, развертывает каждый элемент только один раз.В краткосрочной перспективе я изменил тестируемый код, чтобы он больше не требовал такого поведения, а в более долгосрочной перспективе я, скорее всего, реализую атрибут, который не делает этого предположения.

1 Ответ

2 голосов
/ 18 мая 2011

DeploymentItem s - это файлы, которые вы обычно развертываете на компьютере клиента, поэтому вы не должны удалять их после их развертывания!

Вы должны создать каталог «Песочница» для своих модульных тестов и использовать обычные методы файловой системы .NET, такие как File.Delete, для копирования / доступа / удаления файлов.

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