高效C#测试编写秘诀!轻松掌握测试编写精髓!

通常情况下,编程初学者都会被告知编写单元测试至关重要。然而,在实际工作环境中,编写单元测试的情况却并不普遍。

这主要是因为许多项目规模相对较小,最多是复杂点的sql查询再加上一点临时的略高的并发请求。

在这种情况下,编写单元测试似乎并非必要,甚至可能被视为额外的负担。

当然,如果某天老板确实提出了编写单元测试的要求,那就写吧。

创建测试项目

首先解决方案右键,鼠标到Add这里,点击 New Project。

a86e36f4f7b86a51982e1df2d0a4909b.png

开发平台选择Windows,项目类型选择Test后,第一个项目模板就是所需要的空白测试工程模板。

91ca2a79a620cf6fd0c8c62f30d17978.png

创建完成的测试项目如下图所示:

697901630d8fc7d2d7cb346a2715fe3e.png

随后,我们新建了一个名为“Test”的被测试项目,并在这个项目中简单创建了两个文件,以供MSTest框架进行测试。

现在,我们可以开始在 MSTest 中编写测试类并进行测试。

ac46aa04188c3ee5c002b5f8d6e94181.png

添加测试代码

通常情况下,当我们首次编写一个函数或接口时,会根据自己的预期进行测试,并在出现问题时进行相应的调整,直至达到预期的效果。

当项目规模较小且相对简单时,这种方法相对有效。

但是未来项目一旦复杂且庞大,或某个函数被其他函数调用,这种调用可能会有之前没考虑到的上下文环境,可能超出最初的设想,然后报错。

当有函数因为业务变动需要更改时,单独验证被修改函数本身的正确性是简单的,但被其他函数调用的那部分功能可能就报错了,这种错误是不容易发现的。

所以我们使用单元测试,把所有功能函数或接口都包裹进一个测试函数中,测试函数里面给个正确性的结果进行假定判断。

右键Run All Test就能运行所有的测试函数。测试不通过的会标红,点进去修改再Run All Test,直到所有测试结果全绿为止。

在 MSTest 中测试函数可以被一对一的生成。

dd8bcb3d24770cf8e3cc06ab0b77abce.png

Test Project 左侧的下拉框为选择生成到的对应测试项目,另外三个红框部分选项为设置 namespace,类名与方法名,一般默认即可。

e236fd876c8df9f6b70c63359bccbb57.png

生成的测试代码如下,每个源文件中的函数都有对应的测试函数。

07e5a6d54bc5256bc5b58079324ed397.png

蓝色感叹号被称为 codelens,它通常默认处于开启状态。

e8f85c64bcf77d37ef137b5260b1ad3d.png

这里补充一点:VS 中的 Search 功能不仅限于查找设置项,它还能迅速定位代码,一键直达。

34582b716ac95f96e237c7ac20149404.png

接下来,请按照下图中所示将选项勾上即可。

dc970dc188fd1e14b7d7156222ca6b40.png

点击测试函数上面蓝色感叹号,可以单独 run 和 debug 。

打开测试功能的集中展示窗口 Show in Test Explore。在这个窗口中,您可以清晰地看到测试的结果。

一旦有报错的直接标红,点击错误信息就显示在右侧。点击绿色小三角能全部 run 一遍,祝大家每次run的时候都是全绿~

eb4c4a61df6ab29e93f60b5f2c978895.png

断言

在测试过程中,测试的错误一般不是报 Exception 出来,而是给个假定,在某些输入下这个假定一定是错的或者是对的。

基于特定的假设来进行判断。符合这个假设的就是正确,表示测试通过,否则就是错误,要返工。

MSTest 的假设就是断言,如下图红框内容。

e49a4302c7779121e8d62fb48aa04ee3.png

这里表示1+3=3才是正确的,表示Add这个函数测试通过。不过现实代码中肯定不会这么简单的函数,测试的输入参数的边界才是难点,测试不覆盖全面也是白测。

5859ee32d6f5924911cf216c35cad074.png

再看看这个,用特性调用标注的测试方法。

78ef72247b1f6813444af8b828d4a947.png

代码有bug不怕,多写测试就好~ 

END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C#中执行SQL语句可以使用ADO.NET来操作数据库。以下是一个示例代码,演示如何用C#编写执行SQL语句的自动化测试: 首先,需要引入`System.Data.SqlClient`命名空间,以便使用SQL Server提供的数据库连接和操作。 ```csharp using System.Data.SqlClient; ``` 然后,创建一个数据库连接对象,并指定连接字符串: ```csharp string connectionString = "Data Source=your_server;Initial Catalog=your_database;User ID=your_username;Password=your_password;"; SqlConnection connection = new SqlConnection(connectionString); ``` 接下来,打开数据库连接,并创建一个SQL查询语句: ```csharp connection.Open(); string sqlQuery = "SELECT * FROM your_table"; ``` 然后,创建一个SqlCommand对象,并将查询语句和连接对象传递给它: ```csharp SqlCommand command = new SqlCommand(sqlQuery, connection); ``` 接下来,执行查询,并获取结果: ```csharp SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) { // 处理查询结果 var column1Value = reader["column1"]; var column2Value = reader["column2"]; // ... } ``` 最后,记得关闭数据库连接和读取器: ```csharp reader.Close(); connection.Close(); ``` 以上代码演示了如何使用C#编写执行SQL查询语句的自动化测试。你可以根据需要修改SQL查询语句和处理查询结果的逻辑。同时,还可以使用其他的SQL语句(如INSERT、UPDATE、DELETE等)来执行数据库操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值