|
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&fpage=9&tid=1554840]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
others: | 263ms |
total: | 374ms |
0 / 0 |