zoukankan      html  css  js  c++  java
  • 单元测试工具NUnit的使用

     

    使用 NUnit 工具来进行单元测试

    首先在要创建一个单元测试的项目,通常在原有的解决方案中添加新项目, 在弹出的项目类型中选择单元测试,项目的命名一般情况下与解决方案的名称相同后加UnitTest

    然后在项目中添加一个单元测试的类, 类的名称与要测试的类的名字相同,也是后缀加UnitTest, 在单元测试项目中添加引用   NUnit.Framework.dll, 而后在单元测试的类的头部添加引用  using NUnit.Framework;

    在测试类的上部添加特性  [TestFixture] 表示: 要对这个类进行测试

    然后创建一个测试方法, 测试方法的名字命名与测试类的命名相同, 就是在要测试的方法名后缀Test,在测试的方法上面要添加特性[Test] 表示的是: 这是个测试的方法,如果没有什么语法错误,对单元测试项目进行重新编译。

    using System;
    using System.Text;
    using System.Collections.Generic;
    using System.Linq;
    using Demon;
    using NUnit.Framework;
    
    namespace DemonUnitTest
    {
        /// <summary>
        /// CalcuteTest 的摘要说明
        /// </summary>
        [TestFixture]
        public class CalcuteTest
        {
       
            Calculate mycal = new Calculate ();
    
            [Test]
            public void GetSumTest()
            {
                int a =4;
                int b =6;
    
                int sum =mycal.GetSum(a,b);
    
                Assert.AreEqual(10,sum);
    
            }
    
            [Test]
            public void GetResultTest()
            {
    
                int result = mycal.GetResult(5);
                Assert.AreEqual(15, result);
            }
        }
    }
    

    打开 Nunit, 选择file --> open project  找到刚才单元测试项目中生成的 dll 文件, 选择确定。这样在 nunit 中就能看到里面的测试方法,对每一个测试方法进行运行,如果出现绿色,那么恭喜你,测试通过,如果出现红色的警告,则表示方法没有通过测试,可以根据测试的结果反馈信息来对编写的方法进行修改,直到能达到预期效果,也就是通过单元测试。

    还有一种方法就是在项目中直接使用vs 自带的单元测试功能 一般在创建项目时,就会提示是否要添加单元测试项目, 默认的情况下,会创建一个与解决方案同名的后缀Test的单元测试项目。这种情况下,通过添加单元测试模板来添加单元测试类,与 NUnit不同的是, 要引用vs 自带的单元测试框架 using Microsoft.VisualStudio.TestTools.UnitTesting;

    在单元测试的类上添加特性     [TestClass] 表示的是这是一个测试类 在测试的方法上添加特性     [TestMethod] 表示的是这是一个测试方法

    测试方法的编写与 NUnit 方法相同,但是通过打断点,调试的方式来进行测试的

    using System;
    using System.Text;
    using System.Collections.Generic;
    using System.Linq;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    
    namespace DemonUnitTest
    {
        /// <summary>
        /// CalcuteTest2 的摘要说明
        /// </summary>
        [TestClass]
        public class CalcuteTest2
        {
            public CalcuteTest2()
            {
                //
                //TODO: 在此处添加构造函数逻辑
                //
            }
    
            private TestContext testContextInstance;
    
            /// <summary>
            ///获取或设置测试上下文,该上下文提供
            ///有关当前测试运行及其功能的信息。
            ///</summary>
            public TestContext TestContext
            {
                get
                {
                    return testContextInstance;
                }
                set
                {
                    testContextInstance = value;
                }
            }
    
            #region 附加测试特性
            //
            // 编写测试时,可以使用以下附加特性:
            //
            // 在运行类中的第一个测试之前使用 ClassInitialize 运行代码
            // [ClassInitialize()]
            // public static void MyClassInitialize(TestContext testContext) { }
            //
            // 在类中的所有测试都已运行之后使用 ClassCleanup 运行代码
            // [ClassCleanup()]
            // public static void MyClassCleanup() { }
            //
            // 在运行每个测试之前,使用 TestInitialize 来运行代码
            // [TestInitialize()]
            // public void MyTestInitialize() { }
            //
            // 在每个测试运行完之后,使用 TestCleanup 来运行代码
            // [TestCleanup()]
            // public void MyTestCleanup() { }
            //
            #endregion
    
            [TestMethod]
            public void TestMethod1()
            {
                //
                // TODO: 在此处添加测试逻辑
                //
            }
    
            Demon.Calculate mycal = new Demon.Calculate();
    
            [TestMethod]
            public void GetSumTest()
            {
                int a = 4;
                int b = 6;
    
                int sum = mycal.GetSum(a, b);
    
                Assert.AreEqual(10, sum);
    
            }
        }
    }
    

    总之不能为了通过单元测试而进行测试,或修改测试方案,这样即使通过了单元测试,但隐藏了方法的错误算法设计或逻辑处理,当在待定或着实际的场境下,问题还是会暴露的,所以应该严格对待单元测试,不能为了单元测试而测试。

  • 相关阅读:
    C#如何连接wifi和指定IP
    3.4 小结
    3.3.4.5 起始与清除
    3.3.4.4 打印行
    3.3.4.3 设置字段分隔字符
    3.3.4.2 字段
    3.3.4.1 模式与操作
    3.3.4 使用 awk 重新编排字段
    3.3.3 使用 join 连接字段
    3.3.2 使用 cut 选定字段
  • 原文地址:https://www.cnblogs.com/wisdo/p/4193984.html
Copyright © 2011-2022 走看看