gpt4 book ai didi

wpf - IdeaBlade有哪些局限性?

转载 作者:行者123 更新时间:2023-12-04 13:48:32 25 4
gpt4 key购买 nike

我将启动一个需要Web和桌面界面的项目。一种解决方案似乎是IdeaBlade(http://www.ideablade.com)。
谁能使用它描述其局限性和优势?是否可以测试?

谢谢,
亚历克斯

最佳答案

作为IdeaBlade的技术副总裁,对于这个领域的DevForce局限性和优势,我不应该一概而论。很高兴回答特定问题。

是否可以测试?为此,我可以从回答的开头开始回答。

这是一个可能引起争议的问题。人们对什么东西可以测试具有强烈的感情。让我将自己局限于特定的测试方案..然后您判断我们满足您的测试要求的程度。

1)如果您愿意,DevForce支持纯POCO实体。大多数人会更喜欢使用从我们的基本Entity类派生的实体,因此我将随后的评论完全限于此类实体。

2)您可以使用任何所需的ctor来更新这样的实体,而无需其他设置即可获取并设置其(非导航)属性。

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


当然需要汇编参考。

3)要测试其导航属性(返回其他实体的属性),首先要新建一个EntityManager(我们的工作单元,类似上下文的容器),然后将实体添加或附加到EM,然后关闭。从我们的基类继承的Entities的导航属性希望通过该容器找到相关的实体。

4)在大多数自动化测试中,将以断开连接状态创建EntityManager,以使其从不尝试访问服务器或数据库。

您可以向其中添加一个订单,一个客户,一些OrderDetails;请注意,所有这些都是在测试的上下文中构造的...不能从任何地方检索到。

现在订购。客户返回测试客户; order.OrderDetails返回您的测试详细信息。准备工作包括创建EM,测试实体,并确保这些实体具有唯一的ID并关联。

这是一个示例序列:

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


EM充当内存数据库。

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)我经常写一个所谓的“ Data Mother”测试助手类,用标准的测试数据集合(包括异常案例)填充EM。

8)我可以将EntityManager的测试实体缓存导出到文件或测试项目资源中。运行测试时,DataMother可以检索和还原这些测试实体。

观察到我正在逐步从单元测试转向集成测试。但是(到目前为止)我的测试不需要访问服务器,实体框架或数据库。它们运行速度快,不容易分散安装故障。

当然,您可以进行深度集成测试中的服务器,并且可以轻松地针对本地,LAN和Web场景动态地切换服务器和数据库。

9)您可以拦截查询,保存,更改,添加,删除和其他事件以进行交互测试。

10)我描述的所有内容都可以在常规.NET和Silverlight中使用,也可以与我遇到的每个测试框架一起使用。

不利的一面是,我不会将我们的产品描述为对模拟友好的。

我很容易承认我们不是持久性忽略(PI)。如果您是PI狂热分子,那么我们是您的错误选择。

我们尝试欣赏PI的重要优势,并尽力在产品中实现它们。我们尽我们所能将框架关注点移开了。如您所见,我们的抽象仍然在少数地方泄漏。例如,我们将这些成员添加到您实体的公共API中:


EntityAspect(持久性意识的门户)
错误已更改
PendingEntityResolved
物业变更
ToQuery <>


就个人而言,我会将其削减为两个(EntityAspect,PropertyChanged);其他人被我偷走了。对于它的价值,从Object继承(根据需要)会贡献另外五个。

我们认为我们在纯P.I.和易于开发。

我的问题是:“从单元到深度集成测试的整个过程,它是否能为您提供所需的验证期望而又不会造成很大的摩擦?”

我当然很好奇要学习如何以类似产品减少摩擦而获得类似设备。并渴望就如何改善对应用程序测试的支持提出建议。

随时跟进有关我可能忽略的其他测试方案的问题。

希望这可以帮助

病房

关于wpf - IdeaBlade有哪些局限性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2712842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com