当前位置: 欣欣网 > 码农

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

2024-03-02码农

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

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

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

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

创建测试项目

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

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

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

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

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

添加测试代码

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

断言

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

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

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

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

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

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

END