zoukankan      html  css  js  c++  java
  • .NET Core 单元测试

      应用程序测试的类型很多,包括集成测试,Web 测试,负载测试等。在最底层的是单元测试,此测试可以测试单个软件组件或方法。单元测试一般只测试开发人员的代码,不应该测试基础结构普、问题,如数据库,文件系统或网络资源等。单元测试可以使用测试驱动开发(TDD)编写,也可以将它们添加到现有代码已确认其正确性。

      在编写单元测试时,注意不要随意地在基础结构上引入依赖项。这些依赖项往往使测试更慢,更脆弱,因此应该将其保留用于继承测试。可以通过遵循显示依赖性原则,使用依赖注入从框架请求依赖关系,以此来避免应用程序代码中地这些隐藏依赖关系。

    1.xUnit.net 单元测试

      创建一个 .net core 类库项目,创建一个用于测试的方法:

        public class UnitTest
        {
            public bool IsNum(string obj)
            {
                var i = 0;
                return int.TryParse(obj, out i);
            }
        }

      然后添加 xUnit 测试项目:

      创建测试成功和测试失败的方法:

        public class UnitTest1
        {
            private UnitTest myTest;
            public UnitTest1()
            {
                myTest = new UnitTest();
            }
            [Fact]
            public void TestSuccess()
            {
                Assert.True(myTest.IsNum("1"));
            }
    
            [Fact]
            public void TestFail()
            {
                Assert.True(myTest.IsNum("q"));
            }
        }

      [Fact] 特性将方法表示为单个测试。

      在 VS 工具栏中选择 测试-- 运行 -- 所有测试,显示一个成功,一个失败:

      也可以使用 [Theory] 特性执行相同的代码,但具有不同输入参数的测试,使用 [InlineData] 特性来指定这些输入的参数:

            [Theory]
            [InlineData("-1")]
            [InlineData("0")]
            public void Test(string str)
            {
                Assert.True(myTest.IsNum(str));
            }

    2.MSTest 单元测试

      xUnit 使跨平台的良好选择,在面向 Windows 时,MSTest 是一个更好的选择,因为是官方提供的支持。

      创建 MSTest 测试项目,同样添加测试成功和失败的方法,在方法上添加 [TestMethod] 特性,并在类上添加特性 [TestClass]:

        [TestClass]
        public class UnitTest1
        {
            private UnitTest myTest;
            public UnitTest1()
            {
                myTest = new UnitTest();
            }
            [TestMethod]
            public void TestSuccess()
            {
                Assert.IsTrue(myTest.IsNum("1"));
            }
    
            [TestMethod]
            public void TestFail()
            {
                Assert.IsTrue(myTest.IsNum("q"));
            }
        }
  • 相关阅读:
    Arduino语法-变量和常量
    Arduino-函数库和程序架构介绍
    第十章浮力题汇总
    pyqt5-按钮基类-QAbstractButton
    在Windows上安装Arduino-IDE
    Arduino-接口图
    python-文件及文件夹操作
    Qt WebRTC demo
    多线程使用信号量sem_init,sem_wait,sem_post
    华为公司内部培训资料_介绍RTSP的消息、信令等
  • 原文地址:https://www.cnblogs.com/afei-24/p/11407023.html
Copyright © 2011-2022 走看看