gpt4 book ai didi

c# - .Net 项目的 TeamCity 增量测试

转载 作者:太空狗 更新时间:2023-10-30 00:31:30 25 4
gpt4 key购买 nike

我正在构建一个模块化的 WPF 应用程序。每个屏幕都是一个高度独立和孤立的单元。唯一共享的东西——shell 和一个公共(public)库,带有用于可重用服务(消息总线、持久性、窗口管理等)的外观接口(interface)。

由于模块是松散耦合的,所以当单个模块发生变化时重新测试所有内容是没有意义的。我只想测试更改的内容。如果公共(public)库发生变化 - 一切都应该重新测试。

从源代码控制差异中,您可以轻松获得已更改文件的列表,从而解决受影响的项目(csproj 文件列出了所有要编译的文件)。您还可以从 csproj 文件中解决项目依赖关系(谁在使用它,谁会受到影响)。所有这些信息应该足以说明实际需要测试的内容。所以这个问题听起来是可以解决的。

有人用 TeamCity 做过吗?有什么建议么?我看到有一个针对 Java 人员的解决方案: http://blog.jetbrains.com/teamcity/2012/03/incremental-testing-with-teamcity/

.net 领域呢?

最佳答案

您必须创建构建配置并生成工件并运行测试。

例如,您有项目 LibraryLibrary.TestsPortablePorable.TestsAppApp.Tests

您必须创建编译LibraryLibrary.Test 项目的构建配置(例如Library build)。此配置会生成人工制品,例如。 libtests.zip.

然后您创建另一个构建配置(例如,Run Library Tests 并设置快照和工件依赖于先前创建的Library build 配置。在此测试运行配置中,您有解压 libtests.zip 文件(从 artefacts 依赖项中收集)并创建一个构建步骤(例如 NUnit runner)来运行这些测试。

注意:您只想在库中发生更改时运行测试,因此在“版本控制设置”下选中Show changes from snapshot dependencies 并创建新的 VCS Trigger 以 Trigger关于快照依赖项的更改(也是一个复选框)。

然后,假设 Portable 依赖于 Library 并且有自己的测试套件。

同样,您应该创建构建配置来编译项目 PortablePortable.Tests 并生成名为 eg 的工件。 portabletests.zip

您再次创建另一个构建配置来运行与之前相同的测试。只有这一次,您应该在 Build libraryRun library tests 配置上添加另一个快照依赖项。有了这个额外的快照依赖项,您将实现仅在库构建和测试运行正常时才编译和运行代码。

同样适用于 AppApp.Tests

所以...当库中发生更改时,将重建整个集合并运行所有测试(Library.TestsPortable.TestsApp, App.Tests).当 Portable 代码发生变化时,触发 Bulid portables 并运行 Portable.TestsApp + App.Tests 是重新编译,App.Tests 是运行的。

在此链接上,您可以了解有关 teamcity 中快照和工件依赖项的更多信息 http://confluence.jetbrains.com/display/TCD8/Configuring+Dependencies

关于c# - .Net 项目的 TeamCity 增量测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25402454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com