我对单元测试和集成测试之间的区别有疑问。我在 .NET 中有一个 API,并且有一个基础设施层,例如我在其中删除数据库中的数据。我使用 DbContext - 实体框架编写此数据。但是使用 InMemoryDbContext 很容易模拟 DbContext。
这就是我的问题所在。这是单元测试还是集成测试?假设我直接连接到数据库,这对我来说是集成,但在这种情况下?
这个方法我想测试一下。
public MyDbContext _context;
public void Delete(int id)
{
_cotnext.Delete(id);
_context.SaveChanges();
}
提前非常感谢您
这是单元测试还是集成测试?
这有关系吗?
单元测试应该测试一些“单元”,但该单元可以是任意大小。它可能是一个类,但也可能是“存储系统”。而且您通常有多个级别的“单元”,从单独的方法到完整的程序。争论什么是单元以及单元之间的集成可能不会有成效。
“单元测试”在某些情况下用于表示所有自动化测试,因此如果您想对测试进行分类,单元与集成可能不是最佳选择。一个可能更好的方法是按运行时分类。需要几秒或几分钟的测试可以与需要几毫秒的测试分开运行。
对于数据库,您通常会使用数据库的内存模拟来测试大多数函数。但使用真实数据库测试查询以确保它们实际上正常工作当然也很有用。我们将后面的测试称为“集成测试”,但我们不妨将其称为“数据库测试”或“慢速测试”。重要的是您的团队中的含义是明确的。