繁体   English   中英

单元测试(C#)

[英]Unit Testing (C#)

我正在测试一些CRUD操作。 我的问题是:

1)如果我需要测试Add,Get和Delete方法。 持久层是一个数据库。 由于我需要一个测试对象来获取和删除,我应该将所有这3个组合成一个[TestMethod],还是将它们分成3个方法并在Get和Delete测试之前重新添加对象?

理想情况下,您应该为每个案例进行单独测试。

您应该使用某种模拟 - 通过框架或通过自己设置数据库 - 来设置每个测试的初始条件。

因此,要测试添加,您将从空白数据库开始,然后添加一些新数据,尝试再次添加相同的数据(它应该失败),添加不完整的数据等。

然后,为了测试获取和删除,您将从预先填充的数据库开始,并执行您需要的各种测试。

我通常会做一个单独的测试。 如果我正在测试一个“get”类型的方法,测试设置会插入对象(通常通过一些模拟框架)我希望在必要时得到它,它就不会以与实际获取相同的方式被断言将。

这确实意味着如果add实现中断,get和add的测试都将以这种或那种方式失败,假设适当的覆盖。 但无论如何,这就是你想要的,对吧?

如果您正在编写自己的ORM来处理CRUD,我建议您在不同的测试中分离每个操作。 不要创建大型测试,它有许多失败点和许多改变的原因,因为它会使您的测试项目难以维护。 分别测试每个功能。

现在,如果你使用一些第三方ORM来处理CRUD,你根本不应该测试该工具,除非你不相信它。 但是,在这种情况下,你应该找到一个更好的选择。 :)

您可以进行一些验收测试来检查一切是否正常,此时您将真正到达数据库。

无论是什么让测试更容易:)只要你得到一个返回说明哪个方法通过/失败,那么它应该是好的。

你好:)我将单独分开测试,然后在每个之前清理干净并清理完毕。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM