问: 我的问题由三部分组成:
1-我想问一下如何对一种方法进行单元测试,这种方法使用另一种方法连接数据库(层概念或 ORM)。
2-单元测试如何在我的方法(它们之间的契约)之间进行测试?请举例说明这一点?
3-当我知道我的单元测试只是浪费而且不是那么重要时,我想进行单元测试以避免错误..
请尽可能解释,任何资源建议......等等
提前致谢
最佳答案
一个重要的设计方面是应用程序不同层之间的弱耦合。这种弱耦合可以通过引入接口(interface)和抽象类来实现。这样,应用程序的不同层就不会强耦合。
较弱的耦合允许在单元测试中更轻松地模拟这些依赖关系,这样您就永远不会依赖数据库调用。
所以让我们以下面的接口(interface)为例:
public interface IProductsRepository
{
Product Get(int productId);
void Save(Product product);
}
现在您可以拥有一个依赖于此存储库的服务层:
public class ProductsService
{
private readonly IProductsRepository _repository;
public ProductsService(IProductsRepository repository)
{
_repository = repository;
}
public void SomeBusinessOperation(int productId)
{
var product = _repository.Get(productId);
// TODO: update some properties of the product
_repository.Save(product);
}
}
如您所见,服务类现在与存储库弱耦合。然后,您可以非常轻松地单独对其进行单元测试。只需选择一个模拟框架,例如 Rhino Mocks并在您的单元测试中生成一个模拟的存储库实现,以提供给服务构造函数,并能够在隔离任何数据库的情况下测试业务操作。
关于c# - 关于单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4447925/