即使集成测试失败,TFS2010 build也会部署网站

时间:2011-08-05 20:04:27

标签: tfs2010 integration-testing

我有一个我想在TFS2010(服务器2008R2)中做的构建,它没有做我想做的事情。我想要构建代码(我有一个门控签入策略),并且在成功构建时我想运行测试(单元和集成测试)如果(并且仅当)所有测试都通过,我希望将构建部署到IIS7服务器。

在开始设置时,我开始忽略测试以查看构建和部署是否有效。在我开始工作之后,我现在正试图让测试失败并且必须阻止网站的部署。

在我的一个测试中(故意)我添加了Assert.IsTrue(1 == 2);在日志中我可以看到构建失败但仍然将站点部署到我的IIS服务器。我将MSBuild Arguments设置为:/ p:DeployOnBuild = True / p:DeployTarget = MsDeployPublish / p:CreatePackageOnPublish = True / p:MSDeployPublishMethod = RemoteAgent /p:MSDeployServiceUrl=http://111.11.11.111/msdeployagentservice / p:DeployIisAppPath =“MVC - Jack”/ p:UserName = APP-107 \ Administrator / p:Password = xxxxxx / p:Configuration = Release

为什么即使测试失败并且构建定义设置为“禁用测试=假”和“测试失败时构建失败”,部署仍然会发生

谢谢 千斤顶

聚苯乙烯。我可能在那里解释如何修改BuildProcessTemplate.xaml以在发生故障时停止部署?

2 个答案:

答案 0 :(得分:0)

DefaultBuildTemplate.xaml中的MSBuild活动在任何测试之前运行。因此,无论您的测试结果如何,它都会做同样的事情。要解决此问题,请在“If Tests Successful”分支的DefaultBuildTemplate.xaml中的测试之后添加一个MSBuild Activity ,并在该活动中进行部署。

答案 1 :(得分:0)

在尝试了一整天后,我有一部分鞭打了。我在http://www.codebadger.com/blog/post/2011/07/14/TFS-Team-Build-2010-Only-deploying-if-unit-tests-pass.aspx

找到了一个与我非常相似的样本

现在我只需弄清楚如何不允许它构建两次。至少我现在在部署之前有单元和集成测试。