c# - 如何针对数据库编写集成测试

标签 c# .net unit-testing integration-testing

假设我有一个像下面这样的类(class)。

我不确定如何针对它编写单元/集成测试。是否需要重构?

是否只是添加一个 Add/Find 方法(实际上会有),在测试中调用 Add,然后调用 Delete,然后调用 Find?

public class Repository
{
    public void DeleteProduct(int id)
    {
        var connstring = ""; //Get from web.config
        using(SqlConnection conn = new SqlConnection(connstring))
        {
            conn.Open();
            SqlCommand command = new SqlCommand("DELETE FROM PRODUCTS WHERE ID = @ID")
            command.Paramaters.Add("@ID", id)
            command.ExecuteNonQuery();
        }
    }
}

最佳答案

黄金法则是不要测试framewkrk的代码。除非此方法没有自定义逻辑,否则无需测试。 我认为您想要实现的目标是分离存储库以使单元测试变得容易。最好的方法是为您的存储库创建接口(interface)并模拟它。 如果您确实想创建一些集成测试,那么您必须创建一些测试数据库,您可以在其中进行核弹实验。

关于c# - 如何针对数据库编写集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15340924/

相关文章:

C# Xml 反序列化,忽略 XML 中的数据

c# - 从 XML 配置文件加载和检索键/值对

javascript - 使用 Jest 测试窗口重新加载 Redux reducer

javascript - 我如何在 Jasmine 中测试回调

c# - 有没有办法以编程方式将类从一个 namespace 移动到另一个 namespace ?

c# - Entity Framework 5.0 中的 MySQL 提供程序错误

c# - Entity Framework 5 和 SQL 查询

c# - 检测点击标签,在 ViewCell 内,在 ListView 内

c# - 在 C# 中,哪个包含装箱和拆箱策略,数组还是数组列表?

java - 如何使用PowerMock模拟除被测类之外的另一个类的私有(private)方法?