2

上下文 - 手动运行测试

假设我有一个使用canopy测试的 C# ASP.NET Core Web 应用程序。我有一个名为Test. 以下是我通常会如何手动运行我的树冠测试。

在一个 PowerShell 窗口中,我运行 Web 应用程序:

dotnet run

然后在另一个 PowerShell 窗口中运行 canopy 测试项目:

dotnet run --project .\Test\Test.fsproj 

然后我在第一个 PowerShell 窗口中按 ctrl-c 来停止应用程序。

一步运行测试

我想要一种从命令行一步完成所有这些的方法。所以我有一个 PowerShell 函数test-app

function test-app()
{
    reset-database
    
    $proc = run_app
    
    run_canopy

    Stop-Process $proc.Id
}

reset-database就是这样做的。它重置数据库,以便测试在干净的环境中运行:

function reset-database ()
{
    dotnet ef database drop -f
    dotnet ef database update
}

run_app负责运行应用程序:

function run_app ()
{
    $items = 'dotnet run' -split ' '

    Start-Process $items[0] $items[1..100] -PassThru
}

它返回一个存储在$proc

$proc = run_app

run_canopy执行以下操作:

  • 使用 启动树冠项目Start-Job。作业存储在$job_canopy.
  • 它通过等待来等待树冠$job_canopy.State完成Completed
function run_canopy ()
{
    $dir = (Resolve-Path .).Path

    $code = {
        param($dir)

        cd $dir
        dotnet run --project .\Test\Test.fsproj
    }

    $job_canopy = Start-Job -ScriptBlock $code -ArgumentList $dir


    while ($job_canopy.State -ne 'Completed')
    {
        Start-Sleep -Seconds 2
    }

    Receive-Job $job_canopy
}

最后,应用程序停止:

Stop-Process $proc.Id

到目前为止,这一直运作良好。如果我想测试 Web 应用程序,我所要做的就是运行:

test-app

问题

我的问题是,canopy 用户通常会做什么来测试他们的应用程序?你只是采取“运行应用程序”然后“运行测试”的手动方法吗?你有一些类似于上面的自动化方法吗?有没有更好的常用方法?

感谢您的任何建议!

4

1 回答 1

1

您的方法非常聪明,我喜欢它用于本地开发,您可以使用单个命令运行应用程序和测试。但是,对于 CI/CD 管道,我建议将其分成单独的步骤 - Canopy 本身就是一个应用程序,应该这样对待:

  1. 构建应用程序
  2. 运行应用程序的测试(单元测试)
  3. 发布应用程序工件
  4. 部署到测试环境+启动

天篷也是如此

  1. 构建 Canopy 应用程序
  2. 发布应用程序工件
  3. 部署到运行 UI 测试 + 运行测试的环境

在具有分离职责(开发、质量保证)的大型团队中工作时,测试应用程序和 Canopy 之间生命周期/部署过程的分离可以帮助您。但是为了快速的本地开发,您的方法没有错。

于 2021-05-05T07:19:05.077 回答