C# 单元测试:使用SQL查询创建和删除条目

C# 单元测试:使用SQL查询创建和删除条目,c#,unit-testing,C#,Unit Testing,我对这个很陌生,我正在尝试做一个测试,我可以在模拟数据库中创建和删除一个对象,但我不知道现在从哪里开始,也不知道如何创建模拟数据库并对其进行读/写 [Fact] public void CreateCommentaar() { //arrange Commentaar commentaar = new Commentaar { CommentaarId = 0, StadId

我对这个很陌生,我正在尝试做一个测试,我可以在模拟数据库中创建和删除一个对象,但我不知道现在从哪里开始,也不知道如何创建模拟数据库并对其进行读/写

    [Fact]
    public void CreateCommentaar()
    {
        //arrange
        Commentaar commentaar = new Commentaar
        {
            CommentaarId = 0,
            StadId = 0,
            UserId = "testId",
            CommentaarText = "text",
            Tijdstip = DateTime.Now
        };

        string queryString = "INSERT INTO Commentaar(UserId, StadId, CommentaarText, Tijdstip) VALUES("
            + commentaar.CommentaarId + " ,"
            + commentaar.UserId + " ,"
            + commentaar.StadId + " ,"
            + commentaar.CommentaarText + " ,"
            + commentaar.Tijdstip + " ,";

        //act
        //Run Mock sql query

        //assert
        //1 commentaar object should exist in mock DB now

    }

    [Fact]
    public void DeleteCommentaar()
    {
        //arrange
        Commentaar commentaar = new Commentaar
        {
            CommentaarId = 0,
            StadId = 0,
            UserId = "testId",
            CommentaarText = "text",
            Tijdstip = DateTime.Now
        };

        string queryString = "INSERT INTO Commentaar(UserId, StadId, CommentaarText, Tijdstip) VALUES("
            + commentaar.CommentaarId + " ,"
            + commentaar.UserId + " ,"
            + commentaar.StadId + " ,"
            + commentaar.CommentaarText + " ,"
            + commentaar.Tijdstip + " ,";

        //act
        //Run Mock sql query

        //assert
        //1 commentaar object should be deleted
    }

但我不确定如何从这里继续。

这里真的没有什么可测试的。测试是否会在模拟数据库中插入某些内容就是测试您的模拟逻辑


测试sql查询是否正确最好使用集成测试和测试数据库来完成。

您不能启动一个

string queryString = "SELECT COUNT(id) FROM Commentaar where id = 0"
如果该查询返回0,则表示您的评论已被删除

一个问题只有当您的第一个UT工作并插入了一个ID为0的行时,它才会起作用


你能分享你正在进行单元测试的代码吗?如果您直接与数据库进行交互,那么这不是单元测试,而是集成测试。与测试DBMS是否正确响应insert或delete命令不同,您的dac上无疑有一个save或delete方法。您的单元测试通常是确定是否从dac传递适当的命令和参数以响应给定的对象。@ChetanRanpariya我没有该代码,这是我需要帮助的事情,因为我不知道或找不到如何从这里继续。我所拥有的只是模型和伪代码如果你模拟数据库并在测试中编写SQL,你肯定没有在测试中覆盖任何代码?您的代码如何与数据库通信?如果这是硬编码到一个特定的数据库,你将无法模拟它。你几乎是对的。目前,我刚刚测试了调用服务是否也正确调用了SQL查询所在的存储库,我认为我现在不能做更多的事情。