• VS2005中的单元测试


    一、 VS2005测试功能介绍

    1.       测试简介

    VS2005提供的新功能,可以直接在解决方案中创建一个测试项目,对一个或多个项目进行测试。测试项目会自动生成大部分的测试代码,只需要修改入参等值便可对代码进行自动测试。

    2.       测试类型

    单元测试:可调用类的方法,传递合适的参数,并验证返回值是否为所期望的值。

    Web 测试:Web 测试是由一系列有序的HTTP 请求组成的,以获得有关它所请求的页或站点的测试报告特定详细信息。

    负载测试:使用负载测试封装非手动测试,例如单元测试、Web 测试和一般测试,然后通过使用虚拟用户同时运行它们。

    一般测试:一般测试是经过包装后在Visual Studio 中用作测试的现有程序。

    手动测试:当测试任务将由测试工程师(而非使用自动脚本)完成时,使用手动测试类型。

    顺序测试:使用顺序测试可按照您指定的顺序来执行一组测试。

    3.       单元测试

    使用单元测试可以创建用C++、Visual C# 或Visual Basic 编写的、演练源代码的编程测试。单元测试可调用类的方法,传递合适的参数,并验证返回值是否为所期望的值。

    4.       Assert

    使用 true/false 命题验证单元测试中的条件。如果此条件计算为 true,则断言通过。通过引发 AssertFailedException 来发出信号表示测试失败。

    Assert 类可对特定功能进行验证。单元测试方法执行开发代码中的方法代码,但只有包含 Assert 语句时才能报告代码行为方面的内容。

    二、 测试步骤

    1.       创建一个WinForm项目

    <1       打开VS2005,创建一个WinForm项目。

    <2       在Form1上添加一个button,写上单击事件,并添加一个私有方法,运行成功。

    2.       新建测试项目

    <1       点击主菜单->测试->单元测试向导,选择创建新的Visual C#测试项目,并输入项目名称。

    <2       在“创建单元测试”选择框中钩选要测试的项目,确定。

    <3       这时VS2005会自动生成测试代码,并弹出一个等待框。

    <4       完成后查看测试项目,会发现添加了很多测试类,如:Form1Test.cs,类里面的方法名也是诸如button1_ClickTest()的测试方法。

    3.       运行测试项目

    <1       生成测试项目,成功。

    <2       选择主菜单->测试->窗口,打开测试视图或测试管理器,可以看到测试项目下的所有测试方法。

    <3       钩选要测试的方法(如果是测试视图则用Ctrl/Shift直接选择记录使其高亮),右键调试选中的测试。

    4.       测试结果

    <1       通过:说明测试的方法没有问题。

    <2       错误:可以看到错误的测试名称、项目、错误信息等,方便找出错误产生的原因。

    <3       没有结论:无法验证不返回值的方法。

    <4       所有测试的结果都可以在测试结果窗口中看到,双击会打开新页面显示更详细的信息。

    三、 实例

    1.       新建项目WinTestCandy

    <1       新建窗体FrmTest,添加控件btnTest,txtInput

    <2       添加私有方法如下:

    private bool IsNum(string strInput)

    {

        if (System.Text.RegularExpressions.Regex.Match(strInput, "^[0-9]*$").Success)

        {

          return true;

        }

        else

        {

     return false;

        }

    }

    <3       双击btnTest,在btnTest_Click事件中输入代码:

    if (IsNum(txtInput.Text.Trim()))

    {

        MessageBox.Show("Is Number");

    }

    <4       运行程序,画面如下:

    2.       新建测试项目UnitTestCandy

    <1       点击主菜单->测试->单元测试向导,选择创建新的Visual C#测试项目,并输入项目名称UnitTestCandy

    <2       选择项目WinTestCandy创建单元测试,确定。

     

    <3       这时VS2005会自动生成测试代码,并弹出一个等待框。

    <4       完成后查看测试项目,有以下几个测试类:

    FrmTestTest.csProgramTest.csResources.DesignerTest.csSettings.DesignerTest.csVSCodeGenAccessors.cs;类里面的方法名也是诸如button1_ClickTest()的测试方法。

    <5       打开FrmTestTest.cs,找到IsNumTest()方法。内容如下:

    /// <summary>

    ///IsNum (string) 的测试

    ///</summary>

    [DeploymentItem("WinTestCandy.exe")]

    [TestMethod()]

    public void IsNumTest()

    {

        FrmTest target = new FrmTest();

     

        UnitTestCandy.WinTestCandy_FrmTestAccessor accessor = new UnitTestCandy.WinTestCandy_FrmTestAccessor(target);

     

        string strInput = null; // TODO: 初始化为适当的值

     

        bool expected = false;

        bool actual;

     

        actual = accessor.IsNum(strInput);

     

        Assert.AreEqual(expected, actual, "WinTestCandy.FrmTest.IsNum 未返回所需的值。");

        Assert.Inconclusive("验证此测试方法的正确性。");

    }

    3.       修改IsNumTest()方法

    <1       初始化strInput值为“123”

    <2       修改预期值expectedtrue

    <3       注释掉最后一句Inconclusive,该代码会引发一个“没有结论”的异常。

    <4       最后代码如下:

    FrmTest target = new FrmTest();

     

     UnitTestCandy.WinTestCandy_FrmTestAccessor accessor = new UnitTestCandy.WinTestCandy_FrmTestAccessor(target);

     

     string strInput = "123"; // TODO: 初始化为适当的值

     

     bool expected = true;

     bool actual;

     

     actual = accessor.IsNum(strInput);

     

     Assert.AreEqual(expected, actual, "WinTestCandy.FrmTest.IsNum 未返回所需的值。");

     //Assert.Inconclusive("验证此测试方法的正确性。");

     

    4.       运行测试项目

    <1       在测试管理器中钩选IsNumTest()方法,右键调试选中的测试。

    <2       可以看到该测试已通过。

    5.       分析代码覆盖率

    <1       编辑测试运行配置,将要测试的项目加入代码覆盖率检测。

    <2       测试完成后,查看代码覆盖率结果,并且可以选择合并以前的几次测试。

    <3       点击“显示代码覆盖率着色”按钮,可以看到那些代码是测试已经覆盖到的,而哪些还未覆盖。

    四、 其它

    1.       可以在不打开项目的情况下对测试列表中的方法进行测试,只需要打开Visual Studio测试元数据文件(*.vsmdi)即可。

    2. 自动生成的测试代码通常会包括以下代码:

    Assert.Inconclusive("无法验证不返回值的方法。");

    它会引发一个没有结论的异常。

    关于Assert的成员,可以参考MSDN帮助文档,以下列出部分:

    AreEqual

    测试指定的值是否相等;如果两个值不相等,则测试失败。

    AreNotEqual

    测试指定的值是否不相等;如果两个值相等,则测试失败。

    AreSame

    测试指定的对象是否都引用相同的对象;如果两个输入内容引用不同的对象,则测试失败。

    AreNotSame

    测试指定的对象是否引用不同的对象;如果两个输入内容引用相同的对象,则测试失败。

    Fail

    断言失败。

    Inconclusive

    表示无法证明为 true 或 false 的测试结果。

    IsTrue

    测试指定的条件是否为 true;如果该条件为 false,则测试失败。

    IsFalse

    测试指定的条件是否为 false;如果该条件为 true,则测试失败。

    IsNull

    测试指定的对象是否为 空引用(在 Visual Basic 中为 Nothing);如果它不为空,则测试失败。

    IsNotNull

    测试指定的对象是否为非空;如果它为 空引用(在 Visual Basic 中为 Nothing),则测试失败。

  • 相关阅读:
    创建百度地图实例
    IntelliJ IDEA使用(1)——IDEA配置JDK
    IntelliJ IDEA使用(2)——IDEA配置Tomcat
    怎样使用 GitHub?
    IntelliJ IDEA使用(3)——IDEA连接Git
    AS3.0杂记——Dictionary、Object与Array
    AIR文件操作:使用文件对象操作文件和目录 .
    As3.0 TextField
    关于乘机
    Html 嵌入 swf
  • 原文地址:https://www.cnblogs.com/tomin/p/1343758.html
Copyright © 2020-2023  润新知