如何运行单元测试和部署代码,而无需两次构建解决方案?

时间:2019-02-14 18:54:37

标签: unit-testing msbuild nunit teamcity msdeploy

我正在为使用NUnit进行单元测试的ASP.NET站点设置TeamCity部署。我该如何以仅需构建一次但允许我在部署代码之前运行测试的方式设置构建?

我的构建配置当前是这样设置的:

1) MSBuild - Build with no deploy.

2) NUnit - Run unit tests.

3) MSBuild - Build again, adding /p:PublishProfile and /p:DeployOnBuild parameters to deploy after building via WebDeploy.

理想情况下,我只想构建一次以缩短构建时间,但是我不想在代码已经部署之后运行单元测试。

我可以在msbuild步骤的中间调用NUnit吗?这样我就可以将3个步骤合并为1个。

或者我可以在TeamCity中使用msdeploy命令吗?只要我仍然可以将其连接到WebDeploy端点,那可以替代我的第三步。

1 个答案:

答案 0 :(得分:3)

这很简单:只需编写自己的msbuild文件即可运行三个目标,每个目标都取决于上一个目标:

目标构建-构建项目(即解决方案文件) 目标RunUnitTests-(取决于目标构建)。这将运行单元测试。 目标部署-(取决于目标RunUnitTests)。这会将您的应用程序部署到任何地方。

它看起来像这样:

<Target Name="Build">
   <!-- Do Build Stuff here -->
</Target>

<Target Name="Tests" DependsOnTargets="Build">
   <!-- Run NUnit tests here -->
</Target>

<Target Name="Deploy" DependsOnTargets="Tests">
   <!-- Deploy your stuff here -->
</Target>

然后在TeamCity中,添加一个msbuild步骤并将其指向上面的文件。然后调用“部署”目标。