Конфликт DeploymentItem и TestCleanup в модульных тестах?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Конфликт DeploymentItem и TestCleanup в модульных тестах?

Сообщение Anonymous »

У меня есть приложение, в котором есть множество модульных тестов во многих классах. Многие тесты имеют атрибуты DeploymentItem для предоставления необходимых тестовых данных:

Код: Выделить всё

[TestMethod]
[DeploymentItem("UnitTesting\testdata1.xml","mytestdata")]
public void Test1(){
/*test*/
}

[TestMethod]
[DeploymentItem("UnitTesting\testdata2.xml","mytestdata")]
public void Test1(){
/*test*/
}
Когда тесты выполняются индивидуально, они проходят успешно. Когда все запускаются одновременно (например, когда я выбираю «Выполнить все тесты в текущем контексте»), некоторые тесты завершаются неудачно, поскольку DeploymentItem, оставленный другими тестами, приводит к тому, что тесты получают неверные данные. (Или тест неправильно использует файлы, предназначенные для другого теста, который еще не запускался.)

Я обнаружил [TestCleanup] и [ClassCleanup] Атрибуты , которые, похоже, помогут. Я добавил это:

Код: Выделить всё

[TestCleanup]
public void CleanUp(){
if(Directory.Exists("mytestdata"))
Directory.Delete("mytestdata", true);
}
Проблема в том, что это запускается после каждого метода тестирования и, похоже, удаляет DeploymentItems для тестов, которые еще не запускались. [ClassCleanup] предотвратит это, но, к сожалению, он не будет запускаться достаточно часто, чтобы предотвратить исходную проблему.

Из документации MSDN кажется, что DeploymentItem только гарантирует, что файлы будут там до выполнения теста, но не более конкретно. Мне кажется, я наблюдаю следующую проблему:
  • Элемент развертывания для теста выполняется
  • (другие вещи происходит?)
  • Выполняется очистка предыдущего теста.
  • Выполняется следующий тест.
  • Тест не пройден, поскольку файлы пропал
Кто-нибудь знает порядок выполнения различных атрибутов теста? Я искал, но мало что нашел.

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

Подробнее здесь: https://stackoverflow.com/questions/142 ... unit-tests
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • DeploymentItem не развертывает файлы
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Проблемы с атрибутом DeploymentItem
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Ошибка утверждения при модульных тестах
    Гость » » в форуме C++
    0 Ответы
    49 Просмотры
    Последнее сообщение Гость
  • Миграция Flyway в модульных тестах выдает ошибку
    Anonymous » » в форуме JAVA
    0 Ответы
    42 Просмотры
    Последнее сообщение Anonymous
  • Как я могу использовать пакеты JDK в модульных тестах в проекте Android?
    Гость » » в форуме JAVA
    0 Ответы
    40 Просмотры
    Последнее сообщение Гость

Вернуться в «C#»