zoukankan      html  css  js  c++  java
  • C# 单元测试

    单元测试demo记录下,随笔记的名字都是随意取,所有测试跟名字没有一点关系,只要按照流程就行了,如果项目中用,还是要规范命名

    主要流程

    1新建测试工程,针对方法进行测试,新建的测试工程没有命名要求(最好规范命名在测试项目名后加Test作为测试工程名称)

    2在新建工程中引用测试dll(Microsoft.VisualStudio.QualityTools.UnitTestFramework),需要测试的项目

    3写测试方法标记针对类[TestClass]针对方法标记[TestMethod],完了重新生成就出现测试方法了(测试窗口菜单栏->测试->窗口->测试资源管理器)。

    主要代码1,需要测试的方法,static和普通方法没关系

    public class Program
        {
            static void Main(string[] args)
            {
            }
            public static void stringIsInt1(string s,out string ss)
            {
                int i;
                bool result=int.TryParse(s,out i);
                if(result)
                    ss=s;
                else
                    ss=null;
            }
            public void stringIsInt2(string s, out string ss)
            {
                int i;
                bool result = int.TryParse(s, out i);
                if (result)
                    ss = s;
                else
                    ss = null;
            }
            public static string stringIsInt3(string s)
            {
                int i;
                bool result = int.TryParse(s, out i);
                if (result)
                    return s;
                else
                    return null;
            }
            public string stringIsInt4(string s)
            {
                int i;
                bool result = int.TryParse(s, out i);
                if (result)
                    return s;
                else
                    return null;
            }
        }
    

     主要代码2测试工程代码class Program必须加public不然测试不了

    public class Program
        {
            static void Main(string[] args)
            {
            }
            [TestMethod]
            public void Test1()// 最好改成stringIsInt1Test,同方法名类似便于测试,
            {
                string s="99";
                string ss;
                ConsoleApplication1.Program.stringIsInt1(s, out ss);
                Assert.AreEqual(ss, "99");
                
            }
            [TestMethod]
            public void Test2()// 最好改成stringIsInt2Test,同方法名类似便于测试,
            {
                string s = "99";
                string ss;
                ConsoleApplication1.Program pg1 = new ConsoleApplication1.Program();
                pg1.stringIsInt2(s, out ss);
                Assert.AreEqual(ss, "99");
            }
            [TestMethod]
            public void Test3()// 最好改成stringIsInt3Test,同方法名类似便于测试,
            {
                string s = "99";
                
                Assert.AreEqual(ConsoleApplication1.Program.stringIsInt3(s), "99");
            }
            [TestMethod]
            public void Test4()// 最好改成stringIsInt4Test,同方法名类似便于测试,
            {
                string s = "99";
                ConsoleApplication1.Program pg1 = new ConsoleApplication1.Program();
                Assert.AreEqual(pg1.stringIsInt4(s), "99");
            }
        }
    

      Assert功能记录

    //Assert测试方法
    //1、 AreEqual:方法被重载了N多次,主要功能是判断两个值是否相等;如果两个值不相等,则测试失败。
    //2、 AreNotEqual:方法被重载了N多次,主要功能是判断两个值是否不相等;如果两个值相等,则测试失败。
    //3、 AreNotSame:引用的对象是否不相同;如果两个输入内容引用相同的对象,则测试失败.
    //4、 AreSame:引用的对象是否相同;如果两个输入内容引用不相同的对象,则测试失败
    //5、 Fail:断言失败。
    //6、 Inconclusive:表示无法证明为 true 或 false 的测试结果
    //7、 IsFalse:指定的条件是否为 false;如果该条件为 true,则测试失败。
    //8、 IsTrue:指定的条件是否为 true;如果该条件为 false,则测试失败
    //9、 IsInstanceofType:测试指定的对象是否为所需类型的实例;如果所需的实例不在该对象的继承层次结构中,则测试失
    //10、 IsNotInstanceofType: 测试指定的对象是否为所需类型的实例;如果所需的实例在该对象的继承层次结构中,则测试失败
    //11、 IsNull:测试指定的对象是否为非空
    //12、 IsNotNull:测试指定的对象是否为非空
    

      

  • 相关阅读:
    [php]php设计模式 Interpreter(解释器模式)
    [php]php设计模式 Decorator(装饰模式)
    [php]php设计模式 Adapter(适配器模式)
    [php]php设计模式 Delegation(委托模式)
    [php]php设计模式 Builder(建造者模式)
    [python]django学习笔记 二
    [ruby]ruby on rails学习笔记1
    [php]php设计模式 Factory(工厂模式)
    pku3461 Oulipo (KMP)
    pku 2406 && pku 1961 Period && hdu3746 Cyclic Nacklace
  • 原文地址:https://www.cnblogs.com/zbfamily/p/9372858.html
Copyright © 2011-2022 走看看