Конфликт 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 МБ.

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