Teamcity NUnit测试 - 没有找到任何程序集

7

我想为一个项目设置TeamCity。 我希望运行一个定期构建,其中包括运行NUnit测试的步骤。

我的NUnit构建步骤如下:

Runtime: NUnit-2.6.3 v4.0 MSIL
Run tests on: **/Tests/*.dll
Execute: If all previous steps finished successfully

但是每次我运行构建时,都会出现一个错误提示:
“未找到任何程序集。”
为什么会出现这种情况,我该如何解决?此外,从概念上讲,此构建步骤将在项目实际构建之前发生。但是,如果没有首先构建项目,那么怎么可能有任何测试DLL(程序集)呢?

你在构建代理上验证过这些目录是否真实存在并且有文件吗?不,你不能在它们被构建之前运行测试。为什么你要这样设置呢? - Lasse V. Karlsen
代理是本地的。是的,DLL文件确实存在于使用的目录中。 - ritratt
为确保,请在测试步骤之前添加一个命令行构建步骤,并添加此命令:dir /s,然后运行此命令并查看构建日志。您是否在其中看到了测试dll文件? - Lasse V. Karlsen
它们很可能是上一个版本构建的剩余文件。除非在构建配置中激活了清除构建目录(SWABRA)的功能,否则先前版本的构建目录可能会被重用。再次提醒,为什么你要在代码构建之前运行测试?(我不知道为什么它不这样做) - Lasse V. Karlsen
你怎么知道测试会在构建之前运行? - Lasse V. Karlsen
显示剩余7条评论
1个回答

12

我建议您在运行测试之前先构建项目。实现这一目标的最常见方法是为生成代码和运行测试配置不同的设置。

您的构建配置将生成包含程序集(很可能)的工件。

测试运行配置将通过工件依赖项提取此工件包,然后在构建步骤中从特定程序集中运行测试。

这是最常用的方法,并且使用此方法,您无需担心文件系统中的文件。 Teamcity的快照隔离和工件依赖项会负责此事(正确配置时)

如果您需要示例,请告诉我。


这个可行。我忘记了包括一个单独的步骤来构建项目(MSBuild,VS sln build等)。 - ritratt
@Dejan,你能提供一个例子或者一个链接来展示你在回答中所描述的内容吗?我认为那正是我需要的,但我对TeamCity还很陌生,不太清楚如何进行各种配置。 - dragonfly02
我不知道为什么我第一次设置时没有遇到这个问题,但当我遇到它时,它让我困惑了一段时间。但是,是的,测试取决于先构建其他项目。+1 - Mukus
也许这只是纯粹的运气,如果你在“构建”和“测试”配置上都设置了版本控制触发器,也许是构建配置触发器在测试之前被触发,因此,测试已经准备好使用工件了。 - Dejan Dakić

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接