Nunit 为什么不';在构建期间使用publishArtifacts服务消息发布的我的工件是否显示在TeamCity中?
当我的NUnit端到端测试失败时,我正在创建一个屏幕截图,并尝试使用以下服务消息(如所述)与TeamCity(均在Windows上运行的构建代理和服务器)发布该截图,我正在使用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: -------
控制台编写该服务消息。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]
的内容,它可能会因为此文本而失败。可能是错误?