【问题标题】:Unit and Integration tests how to handle separate projects under VSTS?单元和集成测试如何在 VSTS 下处理单独的项目?
【发布时间】:2023-03-04 19:55:01
【问题描述】:

在实施单元测试和集成测试时,据我了解,我们应该在测试项目的同一解决方案中创建一个单独的项目。

如果我们处理两个单独的项目(一个用于我的 Web 应用程序,另一个用于测试),我不明白如何在同一个 Ci/Cd 管道上启动“测试”以及如何来自测试项目的“测试”可能会阻止 Web 应用项目的 Ci/Cd 管道的其余部分。

如果我将所有解决方案项目都放在同一个远程存储库中,是否可用?

我需要一些关于在 VSTS 下处理这种需求的正确方法的基本指南

这是我使用 ASP.NET Core 的用例:

  1. 我在我的 Feature 分支上进行本地开发(来自 Develop 分支)
  2. 我提交,然后将我的功能分支推送到远程服务器 (VSTS)
  3. 我将我的功能分支公关到我的开发分支
  4. 如果触发了 CI/CD 管道,则开始构建我的 Web 应用程序项目:然后在 CI 管道上,我应该播放我的所有测试(来自测试项目)
  5. 如果所有测试都通过了,我希望管道继续,然后触发 CD 管道
  6. 如果任何测试失败,我希望停止管道的其余部分

【问题讨论】:

  • 您可以将测试配置为自动运行,然后为 Web 应用程序添加成功触发器。这样,如果您的测试失败,您的 Web 应用程序将不会被构建或部署
  • 如果测试与项目在同一个存储库中,它可以工作,但如果不是,我们怎么能考虑到“获取源”过程只处理一个存储库?那么这两个项目是否应该在同一个仓库中?
  • 理想的完整解决方案应该在同一个存储库中...因为不同的项目可能依赖于其他项目...像单元测试项目将取决于您要测试的项目。
  • 你能澄清一下你到底遇到了什么问题吗?您只需要 .NET Core (Preview) 构建任务(来自 VSTS 构建词干模板)并配置单元测试项目的路径,即 test/**/*.csproj 如果您的单元测试项目位于 test 子如果您的 csproj 文件带有 .Test 的后缀,则使用 **/*.Tests.csproj 之类的文件夹。在同样的任务上,您单击“控制选项”,您将有一个“错误继续”复选框。确保其未选中
  • 在我的第一种方法中,两个项目都位于不同的存储库中,因此我无法弄清楚如何在我的 Ci 管道中同步两个存储库。但正如你提到的,它们应该在同一个存储库中。我确实了解如何处理测试执行。谢谢

标签: unit-testing asp.net-core azure-devops


【解决方案1】:

您可以将测试项目/解决方案放入同一个存储库(不推荐),只需创建新文件夹并在该文件夹中复制测试项目,然后提交并推送更改。

更好的方法是你可以在构建过程中检索测试项目:

  1. 编辑构建定义
  2. 选择一个阶段并点击允许脚本访问 OAuth 令牌选项
  3. 添加命令行任务(工具:git;参数:clone https://test:$(System.AccessToken)@XXX.visualstudio.com/[team project]/_git/[repository] [target folder name];工作文件夹:$(Build.SourcesDirectory)
  4. (可选)添加构建任务以构建测试项目
  5. 构建任务以构建 Web 项目
  6. 发布/部署任务以发布 Web 项目或调用命令以运行 Web 应用程序。
  7. 测试任务做测试。
  8. 其他任务

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    相关资源
    最近更新 更多