我正在尝试将一个Matlab单元测试套件添加到团队城市。 matlab测试使用TAPPlugin,它将TAP输出输出到文件。标准输出的记录太多,无法成功使用。
我已将TAP插件添加到Teamcity,当标准输出为TAP时,该插件可正常工作。现在,如何让TeamCity从文件中读取而不是标准输出,以便在Teamcity中即时更新测试结果?
我想我可以将std输出到日志文件,然后只重定向文件的输出?是否有更好的方法,可能使用Teamcity的服务消息?
答案 0 :(得分:0)
我所做的就是在文件和TeamCity输出中编写。您可以动态地执行,也可以在写入文件结束时将其转储到stdout上。
答案 1 :(得分:0)
我在MATLAB方面看到了一些选项(我可能也无法与TeamCity的apis说话):
JUnit和TAP格式之间存在优缺点,但如果您的详细TeamCity日志导致TAP输出出现问题,则TeamCity中的JUnit支持独立于构建日志,这对您来说可能是一个很大的优势
答案 2 :(得分:0)
我就是这样做的,它运作得很好:
我的MATLAB测试文件(runTestSuiteTeamCity.m):
close all;
clear all; %#ok
import matlab.unittest.TestRunner
import matlab.unittest.TestSuite.*
import matlab.unittest.plugins.TAPPlugin
import matlab.unittest.plugins.ToFile
filename = 'TapDump.tap';
if exist(filename, 'file')
delete(filename);
end
plugin = TAPPlugin.producingOriginalFormat(ToFile(filename));
suite = matlab.unittest.TestSuite.fromPackage('Test');
runner = TestRunner.withTextOutput;
runner.addPlugin(plugin);
results = runner.run(suite);
disp(results);
disp(fileread(filename))
exit;
在TeamCity上,我使用命令行构建步骤和以下自定义脚本:
set mllogfile="c:\temp\test_log.txt"
matlab -wait -r "runTestSuiteTeamCity" -logfile %%mllogfile%%
set mlerror=%%errorlevel%%
type %%mllogfile%%
exit %%mlerror%%