【发布时间】:2023-03-04 19:55:01
【问题描述】:
在实施单元测试和集成测试时,据我了解,我们应该在测试项目的同一解决方案中创建一个单独的项目。
如果我们处理两个单独的项目(一个用于我的 Web 应用程序,另一个用于测试),我不明白如何在同一个 Ci/Cd 管道上启动“测试”以及如何来自测试项目的“测试”可能会阻止 Web 应用项目的 Ci/Cd 管道的其余部分。
如果我将所有解决方案项目都放在同一个远程存储库中,是否可用?
我需要一些关于在 VSTS 下处理这种需求的正确方法的基本指南
这是我使用 ASP.NET Core 的用例:
- 我在我的 Feature 分支上进行本地开发(来自 Develop 分支)
- 我提交,然后将我的功能分支推送到远程服务器 (VSTS)
- 我将我的功能分支公关到我的开发分支
- 如果触发了 CI/CD 管道,则开始构建我的 Web 应用程序项目:然后在 CI 管道上,我应该播放我的所有测试(来自测试项目)
- 如果所有测试都通过了,我希望管道继续,然后触发 CD 管道
- 如果任何测试失败,我希望停止管道的其余部分
【问题讨论】:
-
您可以将测试配置为自动运行,然后为 Web 应用程序添加成功触发器。这样,如果您的测试失败,您的 Web 应用程序将不会被构建或部署
-
如果测试与项目在同一个存储库中,它可以工作,但如果不是,我们怎么能考虑到“获取源”过程只处理一个存储库?那么这两个项目是否应该在同一个仓库中?
-
理想的完整解决方案应该在同一个存储库中...因为不同的项目可能依赖于其他项目...像单元测试项目将取决于您要测试的项目。
-
你能澄清一下你到底遇到了什么问题吗?您只需要 .NET Core (Preview) 构建任务(来自 VSTS 构建词干模板)并配置单元测试项目的路径,即
test/**/*.csproj如果您的单元测试项目位于 test 子如果您的 csproj 文件带有.Test的后缀,则使用**/*.Tests.csproj之类的文件夹。在同样的任务上,您单击“控制选项”,您将有一个“错误继续”复选框。确保其未选中 -
在我的第一种方法中,两个项目都位于不同的存储库中,因此我无法弄清楚如何在我的 Ci 管道中同步两个存储库。但正如你提到的,它们应该在同一个存储库中。我确实了解如何处理测试执行。谢谢
标签: unit-testing asp.net-core azure-devops