Nunit 为什么不';在构建期间使用publishArtifacts服务消息发布的我的工件是否显示在TeamCity中?

Nunit 为什么不';在构建期间使用publishArtifacts服务消息发布的我的工件是否显示在TeamCity中?,nunit,teamcity,Nunit,Teamcity,当我的NUnit端到端测试失败时,我正在创建一个屏幕截图,并尝试使用以下服务消息(如所述)与TeamCity(均在Windows上运行的构建代理和服务器)发布该截图,我正在使用控制台编写该服务消息。WriteLine来自NUnit测试: ##teamcity[publishArtifacts 'C:\BuildAgent\work\xxxxxxxxxxxxxxxx\Path\To\My\Stuff\fail.png'] 我在构建日志中看到一行: ------- Stdout: -------

当我的NUnit端到端测试失败时,我正在创建一个屏幕截图,并尝试使用以下服务消息(如所述)与TeamCity(均在Windows上运行的构建代理和服务器)发布该截图,我正在使用
控制台编写该服务消息。WriteLine
来自NUnit测试:

##teamcity[publishArtifacts 'C:\BuildAgent\work\xxxxxxxxxxxxxxxx\Path\To\My\Stuff\fail.png']
我在构建日志中看到一行:

------- Stdout: -------
##teamcity[publishArtifacts 'C:\BuildAgent\work\xxxxxxxxxxxxxxxx\Path\To\My\Stuff\fail.png']

但是TeamCity并没有拾取该文件,或者至少它没有显示在构建工件中。如何使其工作?

尝试使用相对路径。Teamcity应根据生成工作目录解决这些问题。

您可以尝试
控制台。写入
而不是
控制台。写入线
(见下文)

无论如何,我想TeamCity不会捕获这些消息,因为它们是“测试报告”,并作为文本输出附加在构建日志中

我的感觉是,由于它们被刷新到构建日志中的方式,它们不会被构建脚本交互行为解析和解释

来自(TC 7):

服务消息用于将命令/生成信息传递给 来自构建脚本的TeamCity服务器。为了处理 TeamCity应该将它们打印到的标准输出流中 构建(否则,如果输出不在服务消息语法中, 它应该出现在构建日志中)应显示单个服务消息 不包含换行符,它不应跨越 多行

您应该将测试工件放在特定的文件夹中,并在测试之后延迟发布


请注意,如果您不需要动态解析工件,那么应该使用最简单的方法:构建配置常规设置中的
工件路径。

使用JetBrains提供的NuGet包,这会考虑所有细节

NuGet Install TeamCity.ServiceMessages

在GitHub上:

您的消息是否可能包含一些必须转义的字符:?不,只要
和``都正常(而且看起来是),那么这就不是问题。
控制台。WriteLine
在服务消息后添加一个新行,因此这不是问题。正如引用所说,服务消息只需要写入到构建的标准输出流中——它们是如何刷新的并不重要。不幸的是,我再也无法访问该项目来尝试其他内容:(是的,关于WriteLine,只是尝试一下。它在我的TC上也不起作用。关于NUnit输出的刷新,它不是完全不可逆的,因为测试输出不是标准输出,每个测试框架都附加了自己的控制台侦听器。如果运行
NUnit console.exe
,您将看到测试中的
WriteLine
以某种方式大量出现。此外,TeamCity使用其自己的NUnit runner。请注意,您正在尝试的操作也不能与MSTest一起使用。您可以在测试名称之后及其输出之前看到类似于
[Test Output]
的内容,它可能会因为此文本而失败。可能是错误?