XIKEW.COM - 实用教程 - C# 8.0&.NET Core 3.0单元测试 - 实用教程,C# 8.0, .NET Core 3.0,Modern Cross-Platform Development, Chapter 4 , Writing, Debugging, and Testing Functions - 关于《C# 8.0 And .NET Core 3.0 Modern Cross-Platform Development》第四章单元测试功能

C# 8.0&.NET Core 3.0单元测试
NETCORE 5/31/2020 2:27:24 PM 阅读:2

关于《C# 8.0 And .NET Core 3.0 Modern Cross-Platform Development》第四章单元测试功能

关键字:C# 8.0, .NET Core 3.0,Modern Cross-Platform Development, Chapter 4 , Writing, Debugging, and Testing Functions

测试驱动开发

修复代码中的错误非常昂贵。 在开发过程中发现漏洞的时间越早,修复的成本就越低。

单元测试是在开发过程的早期发现错误的好方法。 一些开发人员甚至遵循以下原则:程序员在编写代码之前应该创建单元测试,这被称为测试驱动开发(TDD)。

更多信息:您可以通过以下链接了解有关TDD的更多信息: https://en.wikipedia.org/wiki/Test-driven_development

创建需要测试的类库

首先,我们将创建一个需要测试的功能。

  1. 在Chapter04文件夹中,创建两个名为CalculatorLib和CalculatorLibUnitTests的子文件夹,并将它们分别添加到工作区中。
  2. 导航到终端| > 新终端并选择CalculatorLib
  3. 在TERMINAL中输入以下命令:
dotnet new classlib
  1. 将名为Class1.cs的文件重命名为Calculator.cs。
  2. 修改该文件以定义Calculator类(带有故意的错误!),如以下代码所示:
namespace Packt
{
    public class Calculator
    {
        public double Add(double a, double b)
        {
            return a * b;
        }
    }
}
  1. 在TERMINAL中输入以下命令:
dotnet build
  1. 导航到终端| 新建终端,然后选择CalculatorLibUnitTests。
  2. 在TERMINAL中输入以下命令:
dotnet new xunit
  1. 单击名为CalculatorLibUnitTests.csproj的文件,然后修改配置以添加一个项目组,该项目组具有对CalculatorLib项目的项目引用:
<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>netcoreapp3.0</TargetFramework>
        <IsPackable>false</IsPackable>
    </PropertyGroup>
<ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
    <PackageReference Include="xunit" Version="2.4.0" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
    <PackageReference Include="coverlet.collector" Version="1.0.1" />
</ItemGroup>

# 关键部分
<ItemGroup>
    <ProjectReference Include="..CalculatorLibCalculatorLib.csproj" />
</ItemGroup>
</Project>

更多信息:您可以通过以下链接查看Microsoft的NuGet源,以获取最新的Microsoft.NET.Test.Sdk和其他软件包: https://www.nuget.org/packages/Microsoft.NET.Test.Sdk

  1. 将文件UnitTest1.cs重命名为CalculatorUnitTests.cs。
  2. 在TERMINAL中输入以下命令:
dotnet build

编写单元测试

编写良好的单元测试将包含三个部分:

  • 安排:这部分将声明和实例化输入和输出的变量。
  • 行动:这部分将执行您要测试的单元。 在我们的例子中,这意味着调用我们要测试的方法。
  • 断言:这部分将对输出进行一个或多个断言。 断言是一种信念,即如果不是true则表示测试失败。 例如,当将2和2相加时,我们期望结果为4。

现在,我们将为Calculator类编写单元测试。

  1. 打开CalculatorUnitTests.cs,将类重命名为CalculatorUnitTests,导入Packt命名空间,然后对其进行修改,使其具有两个用于添加2和2以及添加2和3的测试方法,如以下代码所示:
using Packt;
using System;
using Xunit;
namespace CalculatorLibUnitTests
{
    public class CalculatorUnitTests
    {
        [Fact]
        public void TestAdding2And2()
        {
            // arrange
            double a = 2;
            double b = 2;
            double expected = 4;
            var calc = new Calculator();
            // act
            double actual = calc.Add(a, b);
            // assert
            Assert.Equal(expected, actual);
        }
        [Fact]
        public void TestAdding2And3()
        {
            // arrange
            double a = 2;
            double b = 3;
            double expected = 5;
            var calc = new Calculator();
            // act
            double actual = calc.Add(a, b);
            // assert
            Assert.Equal(expected, actual);
        }
    }
}
  1. 运行单元测试

现在我们准备运行单元测试并查看结果。

  1. 在CalculatorLibUnitTest TERMINAL窗口中,输入以下命令:
dotnet test
  1. 请注意,结果表明运行了两个测试,一个测试通过了,一个测试失败了,如以下屏幕快照所示:

img

  1. 修复Add方法中的错误。
  2. 再次运行单元测试,以查看该错误现已修复。
  3. 关闭工作区。