2

我正在为随着时间的推移已经成熟很多的应用程序编写单元测试。我们正在使用 NDBUnit,因为测试用例变得彼此独立。当我们开始开发这个应用程序时,数据库模式非常易于管理,因此可以拖放在 VS 设计器上创建 XSD 的表格从来都不是问题。好吧,使用我当前的数据库架构,生成的 XSD 大小超过 3MB。在慢速开发机器上,当尝试打开 XSD 时,VS 会进入睡眠状态。因此,保持 DB 模式和 XSD 同步变得非常具有挑战性。有没有办法可以摆脱修改 XSD 的手动步骤?您是否建议我应该考虑其他单元测试框架?Spring.Net 肯定会满足我的需求,但我们没有接口,因此集成它将是一项繁琐的任务。

4

1 回答 1

10

如果您在生产环境中手动使用 Visual Studio 设计器创建 XSD 文件,那么您可能做错了 :) 正如您所发现的,Visual Studio XSD 设计器可能是维护您的最难管理的方式XSD 文件。

我建议按照我的做法切换到 MyGeneration 代码生成工具以从数据库创建 XSD 文件。

信息:http ://www.mygenerationsoftware.com

下载:http: //sourceforge.net/projects/mygeneration/

XSD 模板:http ://www.mygenerationsoftware.com/TemplateLibrary/Archive/?guid=59a03408-c96f-4baf-8171-b6bfe8725dab

此外,您应该注意,虽然我在这些截屏视频中通过将整个数据库强制转换为一个 XSD 文件来演示 NDbUnit 工具的使用,但 NDbUnit 工具的预期实际使用模式是使用多个XSD 文件(s) 根据需要支持您不同的数据库相关测试。

由于 XSD 文件的内容控制着 NDbUNit 将在任何时候操作的数据库的“范围”,因此该工具的目的是为不同的数据相关测试提供许多不同的 XSD 文件并且您将仔细地确定测试、XSD 和测试数据 (XML) 的范围,以便它们在不同的测试集合中彼此密切相关。

整个数据库表示在单个 XSD 文件中(尤其是当 XSD 文件接近 3MB 时!)几乎可以肯定是一种反模式,应该让您考虑到您可能没有考虑您的测试或测试数据一种足够细化的有效方式。

如果您不能在不违反参照完整性规则的情况下有效地将数据加载到数据库表的一部分中,那么您可能需要解决数据库设计问题。就像一个单一的上帝对象在 OO 设计中是一种反模式一样,一个单一的整体数据库也是如此,它在很多地方都具有引用完整性约束,以至于只有通过为每个表加载数据才能插入记录(迫使您测试一次完成整个事情,因为听起来你可能在这里做)。

最后,为了清晰起见,NDbUnit 项目现在是并且一直是开源的,并且完全独立于 Microdesk。当我在 Microdesk 工作时,该公司确实使用了该工具,并且我确实在业余时间为该项目做出了贡献,但 Microdesk 只是采用该工具的一家公司,因此将 NDbUnit 称为“Microdesk 的”是完全错误的NDbUnit 框架”。

希望这会有所帮助~!

于 2009-10-06T02:48:56.493 回答