5 个必备的 .NET 自动化脚本来增强您的应用程序

作者:微信公众号:【架构师老卢】
9-23 18:22
126

无论您是在测试、简化重复性任务,还是将不同的工具集成到您的工作流程中,自动化都可以带来难以置信的动力提升。

在本文中,我们将探讨您可以使用 .NET 和 C# 创建的五个必须尝试的自动化脚本。实施这些计划是为了解决一些实际问题,提供提高效率和改进的途径,最重要的是,它们将使您成为更高效的开发人员。让我们开始吧!

1. 使用 xUnit 进行单元测试

尽管运行测试可能看起来很繁琐和漫长,尤其是对于规模化的项目,但这就是自动化派上用场的地方。利用 xUnit 和 C#,您可以自动化您的单元测试,以确保您的代码始终可靠且没有错误。

这是最简单的自动化脚本,它可以在代码库发生更改后自动运行所有 xUnit 测试。

首先,您需要在项目中将 xUnit 添加为依赖项:

dotnet add package xunit

让我们使用 xUnit 创建最简单的单元测试:

using Xunit;  
public class CalculatorTests  
{  
    [Fact]  
    public void Add\_ReturnsCorrectSum()  
    {  
        var calculator = new Calculator();  
        var result = calculator.Add(2, 3);  
        Assert.Equal(5, result);  
    }  
}

使用 dotnet-watch

每当文件发生更改时,都可以使用 dotnet-watch 自动运行这些测试。这是一个命令行工具,用于监视项目的更改。

作为工具安装到项目中。dotnet-watch

dotnet tool install --global dotnet-watch

现在让我们运行此命令并开始监视更改并永久执行测试:

dotnet watch test

使用此配置,您的单元测试将在您保存文件时自动运行。这成为一种确保代码始终处于测试状态的绝佳方式,而无需手动运行测试。

自动化测试不仅更省时,而且可以降低错过代码中一些重要问题的可能性。它几乎就像是确保代码正常工作的安全网,让您自由地专注于开发。

2.数据库迁移 — EF Core

必须跨环境保持架构一致性。对于开发人员来说,在使用数据库时,这并不容易处理。Entity Framework Core (EF Core) 是 .NET 开发人员非常流行的 ORM。它包含对迁移的内置支持。您甚至可以自动执行数据库迁移,以便数据库的架构始终与模型同步。

如何安装 EF Core 包:

dotnet add package Microsoft.EntityFrameworkCore.SqlServer  
dotnet add package Microsoft.EntityFrameworkCore.Tools

现在,您需要创建一个模型并将其包含在 DbContext 中:

public class Blog  
{  
    public int BlogId { get; set; }  
    public string Url { get; set; }  
}  
  
public class BloggingContext : DbContext  
{  
    public DbSet<Blog> Blogs { get; set; }  
}

使用以下命令创建迁移:

dotnet ef migrations add InitialCreate

要使这些数据库更新自动化,您可以使用一个脚本来获取迁移并在应用程序开始运行时立即应用迁移。

public class Program  
{  
    public static void Main(string[] args)  
    {  
        using (var context = new BloggingContext())  
        {  
            context.Database.Migrate();  
        }  
    }  
}

每次运行应用程序时,它都会检查待处理的迁移并自动应用它们。

自动执行数据库迁移可确保数据库始终处于正确状态

3. 使用 Newman 和 Postman 进行 API 测试

使用 Postman 等工具进行 API 测试可以节省大量时间,尤其是在处理大型或复杂的 API 时,或者您可以自动执行这些测试。Newman 是由 Postman 构建的 CLI 工具,它允许您从命令行运行 Postman 测试集合,并且您将能够将其与 .NET 集成以自动执行 API 测试。

怎么做

首先,导出您的 Postman 集合:
打开 Postman 并选择要自动化的集合。

单击“导出”并将您的集合另存为 JSON 文件。
现在您将全局安装 Newman:

npm install -g newman

最后,您可以编写一个简单的 c# 脚本来调用 Newman 并自动运行您的集合:

var processInfo = new ProcessStartInfo("newman", "run path/to/collection.json")  
{  
    RedirectStandardOutput = true,  
    RedirectStandardError = true,  
    UseShellExecute = false,  
    CreateNoWindow = true  
};  
  
using (var process = Process.Start(processInfo))  
{  
    var output = process.StandardOutput.ReadToEnd();  
    var error = process.StandardError.ReadToEnd();  
    process.WaitForExit();  
  
    Console.WriteLine(output);  
    if (!string.IsNullOrEmpty(error))  
    {  
        Console.WriteLine($"Error: {error}");  
    }  
}

您可以通过 Task Scheduler (Windows) 或 cron (Linux) 将此脚本设置为定期运行

这意味着您可以稳定地验证 API 的功能,而无需人工干预。这在 CI/CD 管道中特别有用,因为您可以在投入生产之前尽早发现问题。

生成克隆的 worker 的 Giphy

4. Azure 部署 - PowerShell

您可以使用 .NET 和 PowerShell 自动部署应用程序。

怎么做

步骤 1:安装 Azure PowerShell 模块

Install-Module -Name Az -AllowClobber -Force

步骤 2:创建用于部署应用程序
PowerShell 的 PowerShell 脚本

$resourceGroupName = "YourResourceGroup"  
$webAppName = "YourWebApp"  
$pathToZip = "path/to/your/app.zip"  
  
# Login to Azure and deploy the app  
az webapp create --resource-group $resourceGroupName --name $webAppName --plan YourAppServicePlan  
az webapp deployment source config-zip --resource-group $resourceGroupName --name $webAppName --src $pathToZip  
Write-Host "Deployment successful!"

可以使用 GitHub Actions 或 Azure Pipelines 等 CI/CD 工具来触发新的代码推送,从而自动执行此脚本。

确实,自动化云部署消除了手动部署的繁琐步骤。它使快速可靠的部署成为可能,确保您的应用程序始终处于活动状态,因为它与最新的更改保持同步。

5. 日志监控和警报 - Serilog

您可以使用 Serilog 和任何更知名的监控工具(如 Seq)来自动化日志监控,并且使用 Seq 实际上可以发出关键问题的警报。

怎么做

首先,安装 Serilog 和 Serilog.Sinks.Seq:

dotnet add package Serilog.AspNetCore  
dotnet add package Serilog.Sinks.Seq

在应用程序中配置 Serilog 以记录到 Seq:

using Serilog;  
  
public class Program  
{  
    public static void Main(string[] args)  
    {  
        Log.Logger = new LoggerConfiguration()  
            .WriteTo.Seq("https://localhost:5341")  
            .CreateLogger();  
        try  
        {  
            Log.Information("Starting web host");  
            CreateHostBuilder(args).Build().Run();  
        }  
        catch (Exception ex)  
        {  
            Log.Fatal(ex, "Host terminated unexpectedly");  
        }  
        finally  
        {  
            Log.CloseAndFlush();  
        }  
    }  
  
    public static IHostBuilder CreateHostBuilder(string[] args) =>  
        Host.CreateDefaultBuilder(args)  
            .UseSerilog() // use Serilog to log it  
            .ConfigureWebHostDefaults(webBuilder =>  
            {  
                webBuilder.UseStartup<Startup>();  
            });  
}

警报将在 Seq 中触发,以便在遇到特定错误情况时发出警报。这些可能包括特定范围的异常或错误代码。

通过自动进行日志监控和创建警报,您可以快速捕获应用程序中的关键问题,从而提高正常运行时间和可靠性。

这 5 个自动化脚本只是 .NET 和 C# 功能的一个开始。自动执行重复和关键任务(如测试、数据库迁移、部署、API 验证和日志监控)可以节省时间,但也意味着软件的整体质量和可靠性得到了提高。

相关留言评论
昵称:
邮箱:
阅读排行