Unit testing 如何在不构建两次解决方案的情况下运行单元测试和部署代码?

Unit testing 如何在不构建两次解决方案的情况下运行单元测试和部署代码?,unit-testing,msbuild,nunit,teamcity,msdeploy,Unit Testing,Msbuild,Nunit,Teamcity,Msdeploy,我正在为一个ASP.NET站点设置TeamCity部署,该站点使用NUnit进行单元测试。我如何设置我的构建,只需要构建一次,但允许我在部署代码之前运行测试 我的生成配置当前设置如下: 1) MSBuild - Build with no deploy. 2) NUnit - Run unit tests. 3) MSBuild - Build again, adding /p:PublishProfile and /p:DeployOnBuild parameters to deploy

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

我的生成配置当前设置如下:

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.
理想情况下,我只想构建一次,以缩短构建的长度,但我不想在部署代码之后运行单元测试

我可以在MSBug步骤中间调用NUnt吗?这将允许我将我的3个步骤合并到1


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

这很简单:只需编写自己的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步骤并使其指向上面的文件。然后调用“部署”目标