2010-04-26 5 views
3

Я запустил проект, для которого нужен веб-интерфейс и рабочий стол. Одним из решений является IdeaBlade (http://www.ideablade.com). Может ли кто-нибудь, кто его использует, описать его ограничения и преимущества? Это можно проверить?Каковы некоторые из ограничений IdeaBlade?

Спасибо, Alex

ответ

6

Как вице-президент по технологии в IdeaBlade это не для меня вообще прокомментировать ограничения DevForce и преимущества в этом пространстве. Счастлив ответить на конкретные вопросы.

Можно ли его проверить? На это я могу ответить с началом ответа.

Это потенциально спорный вопрос. У людей есть сильные чувства относительно того, что делает что-то проверяемым. Позвольте мне ограничиться конкретными сценариями тестирования .. и затем вы судите о степени, в которой мы отвечаем вашим требованиям тестирования.

1) DevForce поддерживает чистые объекты POCO, если это ваше предпочтение. Большинство людей предпочтут использовать сущности, которые происходят из нашего базового класса Entity, поэтому я полностью ограничу свои последующие замечания этими сущностями.

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

var cust = new Customer {ID=..., Name =...}; // have fun 

Необходимы, конечно, ссылки на сборку.

3) Чтобы проверить свои свойства навигации (свойства, возвращающие другие объекты), вы сначала создадите EntityManager (наш блок-интерфейс, контекстно-подобный контейнер), добавьте или присоедините объекты к EM, и вы идти. Свойства навигации объектов, наследуемых от нашего базового класса, предполагают найти связанные объекты через этот контейнер.

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

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

Теперь заказ.Клиент возвращает тест Клиенту; order.OrderDetails возвращает ваши данные теста. Ваша подготовка состоит из создания EM, тестовых объектов, гарантирующих, что эти объекты имеют уникальные идентификаторы и связаны.

Ниже приведен пример последовательности:

var mgr = new EntityManager(false); // create disconnected 

var order = new Order {ID = ..., Quantity = 1, ...}; 

var customer = new Customer {ID = 42, Name = "ABC", }; 

mgr.AttachEntity(order); 

mgr.AttachEntity(customer); 

order.Customer = customer; // associate them 

ЭМ действует в качестве базы данных в оперативной памяти.

5) Вы можете использовать Linq Теперь

var custs = mgr.Customers.Where(c => c.Name.StartsWith("A").ToList(); 

var orders = mgr.Orders.Where(o => o.Customer.Name.StartsWith("A")).ToList(); 

6) Конечно, я всегда создаю новый EntityManager перед каждым испытанием для того чтобы исключить загрязнение окружающей среды кросс-тестирования.

7) Я часто пишу так называемый тестовый класс-помощник «Материнская мать», чтобы заполнить EM стандартной коллекцией тестовых данных, включая девиантные случаи.

8) Я могу экспортировать кеш сущности EntityManager тестовых объектов в файл или ресурс тестового проекта.Когда тесты выполняются, DataMother может извлекать и восстанавливать эти объекты тестирования.

Обратите внимание, что я постепенно продвигаюсь от тестирования модулей и к интеграционным испытаниям. Но (пока) мои тесты не требуют доступа к серверу, или Entity Framework, или к базе данных. Они работают быстро, и они менее уязвимы, чтобы отвлекать неудачи установки.

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

9) Вы можете перехватывать запрос, сохранять, изменять, добавлять, удалять и другие события для тестирования взаимодействия.

10) Все, что я описал, работает как в обычном .NET, так и в Silverlight и с каждой тестовой инфраструктурой, с которой я столкнулся.

С другой стороны, я бы не стал описывать наш продукт как макет.

Я с готовностью признаю, что мы не являемся Настойчивостью Невежественной (PI). Если вы фанатик PI, мы ошибаемся для вас.

Мы стараемся оценить важные преимущества PI и сделать все возможное, чтобы реализовать их в нашем продукте. Мы делаем то, что можем, чтобы исключить из соображений карьеры. Тем не менее, как вы видите, наша абстракция протекает в нескольких местах. Например, мы добавим эти элементы к общественному API ваших сущностей:

  • EntityAspect (шлюз упорство осведомленности)
  • ErrorsChanged
  • PendingEntityResolved
  • PropertyChanged
  • ToQuery <>

Лично я бы отрезал это до двух (EntityAspect, PropertyChanged); другие прогуливались мимо меня. Для чего это стоит, унаследовав от Object (как вам должно), вносятся другие посторонние пять.

Мы чувствуем, что мы создали хорошие компромиссы между чистым П.И. и легкость развития.

Мой вопрос: «Он дает вам то, что вам нужно, чтобы оправдать ожидания без большого трения ... по всему спектру от тестирования единицы измерения до глубины?»

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

Не стесняйтесь следить за вопросами, связанными с другими сценариями тестирования, которые я, возможно, забыл.

Надеется, что это помогает

Уорду

+1

Спасибо за ваш ответ, это очень хорошо, и он убедил меня, по крайней мере оценить продукт. Я бы не сделал этого иначе, потому что я научился игнорировать ключевые слова, и его описание в основном гудит. Мое самое большое беспокойство - его потенциальная нехватка гибкости. Мне нравится тестировать «интересную функциональность» до конца. Когда это невозможно, я определяю некоторые границы, чтобы «конец» был ясен.В последние месяцы, работая над умным клиентом, границы были графическим интерфейсом и слоем данных (из-за тонкостей в тестировании EF), но я смотрю белый проект, чтобы вывести границу в графический интерфейс WPF. –

 Смежные вопросы

  • Нет связанных вопросов^_^