我有一个应用程序,其中问题域由高度相关的域对象表示。我已经将域拆分为几个聚合根对象,这有助于对模型施加顺序,但是为单元测试安排先决条件是艰巨的,因为创建这些聚合根的实例需要创建大量引用的支持对象。
我想编写可重复的、独立的单元测试来运行应用程序而不需要外部依赖项(理想情况下不需要编写大量代码)。
我认为这些是我的选择。有任何偏好或其他建议吗?
编写构建脚本来设置项目数据库并将已知数据插入其中,然后执行单元测试。这是我最不喜欢的选项,因为它引入了外部依赖项(因此不是真正的单元测试)以及更多潜在的失败。它也不会隔离正在测试的业务功能,因为故障可能位于数据访问代码中。
创建可重用的工厂,这些工厂创建具有已知状态的域对象,针对其运行单元测试。这会很好用,但意味着要编写大量样板代码,因此当/如果模型发生更改时需要进行大量更改。
(当前方法)将我的聚合根对象的二进制序列化创建到与测试项目一起签入的文件中。单元测试将它们反序列化以进行测试。这样做的缺点是,如果底层类型发生变化,反序列化将失败,并且必须重新创建所有序列化文件。
接受它并编写一个自定义序列化程序,将图形序列化为 XML 文件,这些文件可以签入解决方案并在测试时反序列化。与 2 一样,这意味着要编写大量的前期样板代码,但维护更容易,因为如果模型发生更改,可以使用文本编辑器轻松编辑序列化状态。
UR DOIN IT RONG。您的域对象具有如此高度的引用性这一事实是主要问题。简化它。
谢谢!