TDD и платформа объекта ADO.NET

let someInt: Int = 3
let someOtherInt: Int = 5

Это не будет работать

print(Float(someInt/someOtherInt))

//"0.0"

Это будет

print(Float(someInt)/Float(someOtherInt))

//"0.6"

Причина в том, что в первом сценарии вы инициализируете Float с результатом целочисленного деления , что приводит к округлению результата до целого числа по характеру операции.

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

17
задан Dario Solera 25 November 2008 в 10:14
поделиться

5 ответов

Один из больших критических анализов против Платформы Объекта был то, что по сути трудно протестировать, например, в вотуме недоверия ALT.Net это заключенный в кавычки gef.

Вот сообщение в блоге обсуждение, как обойти это и быть в состоянии протестировать Ваш код, не поражая базу данных при использовании Платформы Объекта.

, Если тестируемость является большим беспокойством, Вы могли бы хотеть посмотреть на другую платформу ORM, такую как NHibernate, по крайней мере, пока Платформа Объекта 2.0 не выпущена.

14
ответ дан 30 November 2019 в 12:27
поделиться

"Плотное соединение инфраструктуры персистентности к классам объекта в основном устраняет способность эффективно использовать очень трудные циклы обратной связи на бизнес-логике с автоматизированным тестированием. В его текущем состоянии классы объекта EF не могут быть эффективно единицей, протестированной независимо от базы данных.

эффективность автоматизированного поблочного тестирования поведенческих объектов является в основном вопросом того, насколько легкий механика установки данных тестирования и как быстро тесты могут быть выполнены. Используя фактическую базу данных заставит данные тестирования установить более трудоемкий, представить данные для удовлетворения реляционных ограничений, которые не релевантны тесту и делают выполнение теста порядком величины медленнее.

А team’s способность сделать эволюционный дизайн и возрастающая доставка повреждены Объектом невнимание Framework’s к фундаментальным принципам разработки программного обеспечения как Разделение Проблем".

Очевидно украденный отсюда: http://efvote.wufoo.com/forms/ado-net-entity-framework-vote-of-no-confidence/

2
ответ дан 30 November 2019 в 12:27
поделиться

При специфическом рассмотрении инструментов поколения DAL, Вам будет нелегко интегрировать это с TDD. Большинство dal инструментов поколения, которые я знаю также, генерирует Ваши бизнес-объекты и сильно связывает их к созданию DAL, тестирующему трудный.

можно посмотреть на ИЛИ ОТОБРАЖЕННЫЕ инструменты как nHibernate и возможно Linq к sql, которые включают "незнание постоянства", можно определить бизнес-объекты сами, и у них нет ссылок на DAL или любой другой код инфраструктуры. Это делает тестирование Вашей бизнес-логики отдельно от Вашей базы данных намного легче. Я нашел, что это также включает другой сценарий как иногда связанные клиенты намного лучше.

2
ответ дан 30 November 2019 в 12:27
поделиться

Я согласен, что версия 1 структуры объекта является преступлением против дизайна, и это определенно получил мой голос не уверенности. Я кредитую команду продукта EF, хотя для признания неудачи и ответа, открывая свой проектный процесс для сообщества. Следующий релиз не будет идеальным, он даже не будет готов к использованию в приложении к уровню производства, но я думаю, что они, наконец, начинают понимать, что важно для тех, кто использует, кто знает, что плохой дизайн - плохой бизнес. Это сказано ... Я все еще подозрительно. Непрерывный дизайн-время обратной связи - это новое для этих парней, и я прочитал довольно много операторов в блоге ADO.NET, который поднимает яркие красные флаги. Посмотрим, как он идет с выпуском .NET 4.0.

Они, кажется, пытаются, хотя:

прохождение по развитию, приводвому тестируемым развитием с рамкой сущности 4.0

3
ответ дан 30 November 2019 в 12:27
поделиться

Хотя на исходный вопрос был дан ответ, я чувствую, что могу кое-что добавить:

В настоящее время я использую Entity Framework 4.0 на сайте интрасети, который я создаю. Я могу протестировать все в моей бизнес-логике и контроллерах без подключения к базе данных, используя добавленную поддержку POCO.

Хотя POCO могут быть сгенерированы из нового шаблона t4, включенного в VS 2010, кое-что, что мне не удалось найти в VS 2010, - это шаблон t4 для генерации контекста вашего объекта (контекст объекта в основном работает как встроенная единица работы для EF и важна для сопоставления ваших EF-объектов с POCO). К счастью, Иоахим Ликке Андерсен в своем сообщении в блоге Entity Framework 4.0 Beta 1 - POCO, ObjectSet, Repository и UnitOfWork написал шаблон t4 для его генерации, и он оказался очень полезным. Если вы ищете решение с использованием EF4, которое можно тестировать без подключения к базе данных, я настоятельно рекомендую реализовать что-то похожее на его решение, которое включает в себя общий репозиторий, оболочку единиц работы и фабрику единиц работы. Это было очень полезно.

Удачи.

10
ответ дан 30 November 2019 в 12:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: