测试项目没有在TeamCity中读取app.config - > NUnit阶段

use*_*923 14 teamcity nunit

好吧,我们面临一个奇怪的问题,JetBrains TeamCity在我们的主项目中引发了单元测试,其中少数图书馆项目的测试经常失败.显然,它不是在读取配置文件(来自app.config并且很好地存储在项目中 - > bin - > debug - > projectName.dll.config).

关于什么可能是真正的问题的提示或提示将受到高度赞赏.

Gas*_*agy 22

我有同样的问题,浪费了几个小时来弄清问题是什么.

在我们的例子中,NUnit插件被配置为运行以下测试:

**\*Tests.dll
Run Code Online (Sandbox Code Playgroud)

虽然听起来没问题,但事实证明这个模式不仅匹配bin\Debug文件夹中的MyTests.dll,还匹配obj\Debug\MyTests.dll.obj文件夹在内部用于编译,不包含配置文件.

最后解决方案是将插件配置更改为

**\bin\Debug\*Tests.dll
Run Code Online (Sandbox Code Playgroud)

实际上我们使用系统变量进行构建配置,因此我们没有硬编码的"Debug".当工作空间也用于调试/发布版本并且您没有指定完全清理时,使用bin*也可能是危险的.

您可能想知道为什么我没有意识到测试计数不匹配(实际上它是加倍的,因为它们是从bin运行一次而从obj运行一次),但这是典型的:虽然一切都是绿色的,但您并不关心计数.当我们根据配置引入第一个测试时,我们只有一次失败(因为bin中的那个失败了),所以复制并不突出.

  • 作为补充,我们的项目有多个测试dll,其中一个是引用另一个.这导致引用的dll运行两次,而另一个dll的文件夹中的副本没有正确的app.config条目.正确的解决方法是从其他测试项目中删除任何和所有引用. (3认同)

DMa*_*yer 16

除了Gaspar Nagy接受的答案之外,检查你的项目是否有多个测试dll,其中一个是引用另一个.

这会导致引用的dll运行两次,而另一个dll的文件夹中的副本没有正确的app.config条目.正确的解决方法是从其他测试项目中删除任何和所有引用.


Mar*_*rke 6

TeamCity(v6.5.4)有自己的NUnit Test Runner,它和NUnit GUI测试运行器之间似乎存在不一致(2.5.10).NUnit GUI Test Runner遵循长期惯例,期望配置文件名的格式为.config.你可以通过查看Project - > Edit ...在NUnit中看到这个.

另一方面,TeamCity正在寻找app.config.

您可以选择:

  1. 将NUnit GUI设置为指向app.config并在源代码管理中包含生成的nunit项目.
  2. 同时拥有app.config和.config - 同时手动同步.
  3. 在构建过程中添加一个步骤,将.config复制到app.config(反之亦然).