单元测试就是单元测试啊,只可意会不可言传。
怎么说呢?就是对你自己代码中写的方法类进行测试,不运行程序的情况下测试自己的逻辑是否正确,返回的内容是否符合预期。
百度搜一搜很多解释啦~来,跟着我读:单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证…
莫不是要上天?
关于单元测试的建立和项目的引用,可以分为三种情况来说一下。
在单元测试项目中引用web应用程序
那这时候单元测试要测试哪个应用程序项目,可以从它的bin文件夹/程序生成的debug解决方案中找到后缀为dll的文件,直接引用它
( 如果应用程序的bin文件夹/程序生成的debug解决方案中,没有后缀为dll的文件,则要先对应用程序,在最顶上的工具栏找到【生成】——【生成解决方案】)
图为引用上面例1创建的【subject_with_unittest】web应用程序
应用程序:【subject_add_unittest】
解决方案——添加——新建项目,新建一个单元测试项目,命名【UnitTestProject_add】
单元测试项目【UnitTestProject_add】——右键引用——添加引用——项目——同一个解决方案内可引用的项目会自动显示
还有一种更加直接的创建方法,直接在要测试的方法名上右键——创建单元测试
创建后如图,生成的测试模型命名就是你上面右键的方法名update_user_password再加Test
好了,上面对几中创建和引用情况说了一下,现在开始对我的web应用程序开始创建单元测试进行测试。
这种情况属于上面哪种?对第三种,在项目上添加单元测试。
单元测试项目命名:sql_unit_test
应用程序:sqldemo
接下来就编写测试单元对我程序中的update_user_password、update_user_password_parameter、 main,这三个进行测试
[TestMethod]
public void TestMethod3()
{
string expected = "xxxx";
using (var sw = new StringWriter())
{
Console.SetOut(sw);
SqlDAL.main();
var result = sw.ToString();
Assert.AreEqual(expected, result);//Assert.AreEqual判断预期值和获取值是否相等。
}
}
public static void main()
{
Console.WriteLine("你好,世界!");//没错,一切都是从hello word开始
}
打开测试资源管理器,会看到里面有创建好的三个测试模型。右键模型3,运行
(也可以打断点后右键单元测试点调试。)
(我上面运行的是模型3哦)贴一张一目了然的图片出来:测试的代码和对应被测试的类
TestMethod1对应测试update_user_password
TestMethod2对应测试update_user_password_parameter
TestMethod3对应测试main
(测试模型的命名可以更清晰点,如test_for_对应被测试的方法名…我就懒得改了…)
测试运行通过的在【测试资源管理器】中为绿色的勾勾,在测试代码和被测试类上也会有一个绿色勾勾(用绿框框圈出来了)。
未测试过为蓝色
测试未通过为红色
虽然现在懂得不多,只用到一个MSTest,积少成多,总会遇到更多的,继续学习~加油!
最后,放一个我只看懂了前面在说的MSTest,后面的完全没看懂…本着实在看不懂就放着先吧的原则,先放着吧,也许哪一天用上的时候就豁然开朗了呢(实践是检验真理的唯一标准,用到的时候自然就懂了)…(狗头保命)
重温《单元测试的艺术》,总结常用知识点