|
|
|
Unit testing + linq-to-sql
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Есть проблема. Никак не могу приступить к написанию Unit тестов для проекта(новичек в этом деле). Проект ASP.NET + linq to sql. Есть функция которая устанавливает значение одного параметра в одной Энтити. Грубо говоря update энтити каким-то значением..... Как написать Unit test для update этой энтити , тобишь проверка на корректность update. Делаю примерно так Вот метод который тестируется public static void MethodUnderTest(Guid EntityID, int? PropertyID) { DataClassesDataContext db = Utilities.GetDataContext(); var currEntity = (from f in db.Entity where f.EntityID == EntityID select f).Single(); currEntity.SomePropertyID = PropertyID; dc.SubmitChanges(); } Вот что пытаюсь сделать [TestMethod()] public void MethodUnderTest_Scenario_Behavior() { Guid EntityID = ...... Int32? PropertyID = null; ClassUnderTest.MethodUnderTest(EntityID, PropertyID); // .......read entity from db... DataClassesDataContext db = Utilities.GetDataContext(); var currEntity = (from f in db.Entity where f.EntityID == EntityID select f).Single(); Assert.AreEqual(currEntity.PropertyID, PropertyID); } ------------------------------------------------------ Вопрос - правильный ли это подход ? Выборка энтити для тестирования как должна происходить ? Просто от фонаря первую попавшуюся из базы выбрать или как ? Как лучше сделать откат изменений после теста ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2010, 14:19 |
|
||
|
Unit testing + linq-to-sql
|
|||
|---|---|---|---|
|
#18+
В идеале -- надо в FixtureInitialize создавать схему базы. Тогда и откатывать не надо. В реале -- базу держать пустой, в начале теста создавать твой объект и записывать его в базу, и все это оборачивать в трансакцию, которую под конец теста откатывать (при этом обязательно использовать using -- иначе если тест упадет, трансакция зависнет). Тогда база так и останется пустой. Но для меня, если честно, трансакции -- темный лес. Всем рекомендую переходить на NHibernate или какой-нибудь другой базонезависимый ORM и тестировать с SQLite. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2010, 23:01 |
|
||
|
|

start [/forum/topic.php?fid=36&gotonew=1&tid=1554840]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
176ms |
get topic data: |
10ms |
get first new msg: |
7ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 279ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...