一旦我将NUnit添加到混合中,TeamCity就停止了工作

时间:2010-03-23 06:38:47

标签: visual-studio-2008 unit-testing nunit continuous-integration teamcity

我正在努力让我们的构建服务器继续努力。我目前正在Windows XP虚拟机中运行测试,并安装了TeamCity v5.0.3,内部版本为10821.我使用的是NUnit v2.5.3。

我完成了TeamCity的初始设置,没有任何问题,只要我使用sln2008构建运行程序,使整个过程几乎无脑。这种方式非常好,并且非常令人满意地看到您的第一个成功的自动构建。

现在是时候把它提升一个档次了,我想让NUnit工作。我将NUnit 2.5.3程序集保存在SVN的外部libs文件夹中,因此我将其检查到了测试系统。我从构建运行器选项中选择了NUnit 2.5.3,正如在线说明所推荐的那样。但是当我构建时,我收到以下错误:

Window1.xaml.cs(14,7): error CS0246: The type or namespace name ‘NUnit’ could not be found (are you missing a using directive or an assembly reference?) 
Window1.xaml.cs(28,10): error CS0246: The type or namespace name ‘Test’ could not be found (are you missing a using directive or an assembly reference?) 
Window1.xaml.cs(28,10): error CS0246: The type or namespace name ‘TestAttribute’ could not be found (are you missing a using directive or an assembly reference?)

IDE中的所有内容都很好。

通过查找博客文章和提交评论,我得到了一些建议并确认了以下内容:

  • 我在项目文件中正确设置了HintPath值(指向外部库)
  • 我还可以使用msbuild
  • 从命令行执行完整的Release和Debug构建
  • 我尝试过使用NUnit安装程序,以便将nunit.framework.dll注册到GAC中
  • 我已将构建代理的登录帐户更改为测试系统上的用户,而不是LOCAL SYSTEM。

似乎没有任何帮助......这里的其他人能否为我提供一些关于下一步尝试的建议?

1 个答案:

答案 0 :(得分:5)

我已经让这个工作,但不是我真正想要的配置。事实证明,在我的机器上,无论出于何种原因,当我安装NUnit 2.5.3时,nunit.framework.dll未在GAC中注册。

您可以在VS2008命令提示符下输入gacutil /l | find /i "nunit"来解决这个问题。所以我刚用gacutil /i安装了它。

然后我重新运行了sln2008 build runner,它就完成了。

我刚刚意识到,在构建完成时,TC的NUnit运行器未能实际执行任何单元测试。它基本上告诉我“... \ bin \ debug不存在”。 ???

不幸的是,我真正需要的是在GAC中没有NUnit的情况下工作,因为我的所有系统都在一个保存在SVN中的外部libs文件夹中引用了nunit.framework.dll。

目前,我的选择是:

  • 确保所有系统都安装了相同版本的NUnit(在同一位置也是如此?)
  • 让TeamCity以某种方式卸载,然后在每次构建时从SVN重新安装nunit.framework.dll

<强>更新

我终于明白了。另一个用户错误...我只看了一下短日志来试图确定我的问题,只有在看完完整日志之后我才意识到我的nunit.framework.dll的相对路径是错误的。一旦我这样做(并且还必须指定所有程序集进行NUnit测试),所有构建的内容和我的测试现在都在运行。这很可爱!