TeamNet对.Net项目的增量测试
我正在构建模块化WPF应用程序。 每个屏幕都是一个高度独立和孤立的单元。 唯一共享的东西 – shell和一个带有可重用服务的外观接口的公共库(消息总线,持久性,窗口管理等)。
由于模块是松散耦合的,因此在单个模块更改时重新测试所有内容是没有意义的。 我想只测试改变了什么。 如果公共库中有变化 – 应该重新测试所有内容。
从源代码控制diff中,您可以轻松获取已更改的文件列表,从而解决受影响的项目(csproj文件包含要编译的所有文件)。 您还可以从csproj文件(谁使用它,谁受影响)解决项目依赖项。 所有这些信息应足以说明实际需要测试的内容。 所以问题听起来可以解决。
有没有人用TeamCity做过这个? 有什么建议? 我看到有一个Java人员的解决方案: http : //blog.jetbrains.com/teamcity/2012/03/incremental-testing-with-teamcity/
那个.net领域怎么样?
您必须创建构建配置并生成人工制品并运行测试。
例如,您有项目Library
, Library.Tests
, Portable
, Poratble.Tests
, App
和App.Tests
。
您必须创建编译Library
和Library.Test
项目的构建配置(例如, Library build
)。 这个配置生成artefactes让我们说,例如。 libtests.zip
。
然后,您创建另一个构建配置(例如, Run Library Tests
并设置快照和artefacts依赖于先前创建的Library build
配置。在此测试运行配置中,您已解libtests.zip
文件(从artefacts依赖项收集)并创建构建步骤(例如NUnit runner)运行这些测试。
注意:您只想在库中发生更改时运行测试,因此在“版本控制设置”下,选中“ Show changes from snapshot dependencies
”并创建将Trigger on changes in snapshot dependencies
新VCS触发器(也是复选框)。
然后,假设Portable
依赖于Library
并拥有自己的测试套件。
同样,您应该创建构建配置,以便编译项目Portable
和Portable.Tests
并生成称为例如的人工制品。 portabletests.zip
然后,您再次创建另一个构建配置,以便像以前一样运行此测试。 只有这次你应该在Build library
和Run library tests
配置上添加另一个快照依赖项。 通过这种额外的快照依赖性,您将实现仅在库构建和testrun正常时编译和运行代码。
App
和App.Tests
。
所以…当库中发生更改时,将重建整个集并运行所有测试( Library.Tests
, Portable.Tests
, App
, App.Tests
)。 在Portable
代码中发生更改时,将触发App.Tests
Portable.Tests
并运行Portable.Tests
,并重新编译App
+ App.Tests
并运行App.Tests
。
在此链接上,您可以了解有关teamcity中的快照和人工制品依赖关系的更多信息http://confluence.jetbrains.com/display/TCD8/Configuring+Dependencies