如何为每个查询创建一个“单元”测试以在测试资源管理器中显示结果

时间:2019-05-28 07:49:50

标签: c# visual-studio unit-testing

现在,我的工作是测试存储在数据库中的所有查询,并在 Test Explorer 中显示结果,我已经设法测试了每个查询(我只是运行它,检查是否存在错误,并将针对每个错误的自定义错误消息存储在文本文件中,因此它现在可以正常工作,但是输出不是我想要的那样。

免责声明
我想单元测试可能不是测试查询的最明智的方法,但这就是要求我这样做的方法,因此我尝试一下。

问题是,我在一个[TestMethod]中测试了所有查询,结果看起来像这样:( Test Explorer 中只有一个测试方法)

Test explorer result

但是我想知道是否可以有多个[TestMethod],所以我们可以在 Test Explorer 中查看哪些方法有效,哪些无效。

Test explorer result 2

我的研究使我想到了这段代码:

[TestMethod]
[DataSource("System.Data.SqlClient",
            @"Data Source=****;Initial Catalog=****;Persist Security Info=True;User ID=sa;Password=****;Pooling=False",
            "Query",
            DataAccessMethod.Sequential)]    // My DataSource works
public void MyTestMethod()
{
        var q = new QueryDto
        {
            // Create my query with the Id, Name, Query, Parameters...
        };

        ExecTest(q);
}

public void ExecTest(QueryDto query)
{
       // my testing here
}

我尝试将[TestMethod]添加到ExecTest()方法中,但是对于我要实现的目标并没有太大帮助。

所以请告诉我我要寻找的东西是否可能,如果是,怎么做。

随时提问\编辑我会保持关注,因此,如果您想帮助我,就不必等待。

编辑

我要发布另一个问题,因为这个问题有一些错误 感谢您的帮助btw ^^。

1 个答案:

答案 0 :(得分:0)

现在我将坚持我在这里得到的答案create test programmatically

我的代码:

[TestMethod]
[DataSource("System.Data.SqlClient",
            @"Data Source=****;Initial Catalog=****;Persist Security Info=True;User ID=sa;Password=****;Pooling=False",
            "Query",
            DataAccessMethod.Sequential)] 
public void MyTestMethod()
{
           // my testing here using TestContext.DataRow["columnName"] to get the Name, id, Parameters...
}

这将显示如下所示的测试:

enter image description here

Test Explorer 的顶部,它仍显示为单个测试,但至少所有行都在底部进行了详细说明,我可以显示一条自定义消息以提供有关以下内容的信息哪个查询失败,所以很好。