Найдено результатов: 3

Базы Данных Модульного Тестирования

Этим летом я разрабатывал базовое приложение ASP.NET/SQL Server CRUD, и модульное тестирование было одним из требований. Я столкнулся с некоторыми неприятностями, когда пытался протестировать их с помощью базы данных. Насколько я понимаю, модульные тесты должны быть:

  • не имеющий гражданства
  • независимые друг от друга
  • повторяемость с теми же результатами т. е. отсутствие постоянных изменений

Эти требования, по-видимому, противоречат друг другу при разработке базы данных. Например, я не могу проверить Insert(), не убедившись, что вставляемые строки еще не существуют, поэтому мне нужно сначала вызвать Delete(). Но что, если их там еще нет? Тогда мне нужно было бы сначала вызвать функцию Exists().

Мое окончательное решение включало очень большие функции настройки (фу!) и пустой тестовый случай, который будет запущен первым и укажет, что установка выполнена без проблем. Это принесение в жертву независимости испытуемых при сохранении их безгражданства.

Другое решение, которое я нашел, заключается в том, чтобы обернуть вызовы функций в транзакцию, которая может быть легко откатана, как у Роя Ошерова XtUnit . Это работа, но она включает в себя другую библиотеку, другую зависимость, и это кажется немного слишком тяжелым решением для данной проблемы.

Итак, что же сделало сообщество SO, столкнувшись с этой ситуацией?


tgmdbm сказал:

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

Так что, если я правильно прочитал это, на самом деле нет никакого способа эффективно провести модульное тестирование уровня доступа к данным. Или же "unit test" уровня доступа к данным будет включать тестирование, скажем, команд SQL/, генерируемых классами, независимо от фактического взаимодействия с базой данных?

database   unit-testing   transactions   xtunit    

484   9   09:10, 17th August, 2020


Можно ли совместно использовать транзакцию между приложением .Net и объектом COM+?

Некоторое время назад я провел несколько тестов и так и не понял, как это сделать.

Ингредиент:

  • COM + транзакционный объект (разработан в VB6)
  • .Net веб-приложение (с транзакцией) в IIS что...
    выполняет вызов компонента COM+
    обновление строки в базе данных SQL

Тестирование :

Запустите приложение .Net и принудительно создайте исключение.

Результат :

Обновление, выполненное из приложения .Net, откатывается назад.
Обновление, выполненное объектом COM+, не откатывается.

Если я вызываю объект COM+ со старой страницы ASP, откат срабатывает.

Я знаю, что некоторые люди могут думать: "что?! COM+ и .Net вы, должно быть, сошли с ума!", но есть некоторые места в этом мире, где все еще есть много компонентов COM+. Мне просто было любопытно, сталкивался ли кто-нибудь с этим и выяснил ли ты, как это сделать.

.net   database   transactions   com+    

442   2   06:03, 18th August, 2020


Шаблон Транзакционного Проектирования

У меня есть необходимость создать процесс "transactional" с помощью внешнего API, который не поддерживает транзакции COM+ или .NET (Sharepoint, чтобы быть точным)

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

Есть ли у кого-нибудь предложения по дизайну моделей или структур, которые могли бы быть полезны для этого ?

sharepoint   design-patterns   transactions    

396   6   06:10, 22nd August, 2020