TeamNet对.Net项目的增量测试

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

由于模块是松散耦合的,因此在单个模块更改时重新测试所有内容是没有意义的。 我想只测试改变了什么。 如果公共库中有变化 – 应该重新测试所有内容。

从源代码控制diff中,您可以轻松获取已更改的文件列表,从而解决受影响的项目(csproj文件包含要编译的所有文件)。 您还可以从csproj文件(谁使用它,谁受影响)解决项目依赖项。 所有这些信息应足以说明实际需要测试的内容。 所以问题听起来可以解决。

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

那个.net领域怎么样?

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

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

您必须创建编译LibraryLibrary.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并拥有自己的测试套件。

同样,您应该创建构建配置,以便编译项目PortablePortable.Tests并生成称为例如的人工制品。 portabletests.zip

然后,您再次创建另一个构建配置,以便像以前一样运行此测试。 只有这次你应该在Build libraryRun library tests配置上添加另一个快照依赖项。 通过这种额外的快照依赖性,您将实现仅在库构建和testrun正常时编译和运行代码。

AppApp.Tests

所以…当库中发生更改时,将重建整个集并运行所有测试( Library.TestsPortable.TestsAppApp.Tests )。 在Portable代码中发生更改时,将触发App.Tests Portable.Tests并运行Portable.Tests ,并重新编译App + App.Tests并运行App.Tests

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