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

|| 好吧,我们的主项目中JetBrains TeamCity引入的单元测试面临一个奇怪的问题,来自少数图书馆项目的测试经常失败。显然,它没有读取配置文件(来自app.config,很好地存储在项目-> bin->调试-> projectName.dll.config中)。 可能真正问题的提示或技巧将受到高度赞赏。
已邀请:
我遇到了同样的问题,浪费了几个小时才能弄清问题所在。 在我们的例子中,NUnit插件配置为从以下位置运行测试:
**\\*Tests.dll
尽管听起来不错,但事实证明,该模式不仅与bin \\ Debug文件夹中的MyTests.dll相匹配,而且还与obj \\ Debug \\ MyTests.dll相匹配。 obj文件夹在内部用于编译,不包含配置文件。 最后,解决方案是将插件配置更改为
**\\bin\\Debug\\*Tests.dll
实际上,我们将系统变量用于构建配置,因此我们没有对“ Debug”进行硬编码。当工作空间也用于Debug / Release构建并且您未指定完整清理时,使用bin *可能也很危险。 您可能想知道为什么我没有意识到测试计数不匹配(实际上是两倍,因为它们从bin运行一次,从obj运行一次),但这很典型:虽然所有的东西都是绿色的,但您并不关心计数。当我们根据配置介绍了第一个测试时,我们只有一个失败(因为bin中的一个通过了),因此复制不是很出色。
除了Gaspar Nagy接受的答案之外,请检查您的项目是否具有多个测试dll,并且其中一个正在引用另一个。 这将导致引用的dll运行两次,并且另一个dll \文件夹中的副本没有正确的app.config条目。正确的解决方法是从其他测试项目中删除所有引用。
TeamCity(v6.5.4)拥有自己的NUnit测试运行器,并且它与NUnit GUI测试运行器(2.5.10)之间似乎不一致。 NUnit GUI测试运行程序遵循长期的惯例,期望配置文件名的格式为.config。您可以通过查看Project-> Edit ...在NUnit中看到它。 另一方面,TeamCity正在寻找app.config。 您可以选择: 将NUnit GUI设置为指向app.config并包含结果 源代码管理中的nunit项目。 同时拥有app.config和.config-两者都同步 手动。 在构建过程中添加一个步骤以将.config复制到 app.config(反之亦然)。
我也有类似的麻烦 这可能会有所帮助;此外,我们还有一些问题仍然无法解决-我们最终将相关的配置部分复制到了最高级别的配置文件中。 (即,如果它是一个Web应用程序,则将其复制到Web.Config中)-相当麻烦,但我们在此问题上浪费了几天
我最近了解到,类库未读取app.config文件...也许此链接可以有所帮助:) 类库的app.config
如果您的\“ unit \”测试需要配置文件,那么您做错了。正确的单元测试永远不需要配置或访问数据库,文件系统等。您应该更改测试策略。 最好的起点是使用“ 2”注释标记需要配置的测试,并将Teamcity测试运行程序设置为忽略此类别。然后,您应该专注于重构这些测试。

要回复问题请先登录注册