2015-01-16 2 views
1

Я пытаюсь добавить набор тестов модулей Matlab в командный город. В тестах Matlab используется TAPPlugin, который выводит вывод TAP в файл. Слишком много протоколирования для стандартного вывода, чтобы успешно использовать его.Как перенаправить Teamcity для чтения из файла вместо стандартного вывода?

Я добавил плагин TAP к Teamcity, который работает, когда стандартным выходом является TAP. Теперь, как мне заставить TeamCity читать из файла вместо стандартного вывода, чтобы результаты тестов обновлялись в Teamcity «на лету»?

Я думаю, я мог бы передать std в файл журнала, а затем просто перенаправить вывод файла? Есть ли лучший способ, используя служебные сообщения Teamcity?

+0

Как вы получаете выход TAP для стандартного вывода, чтобы вы могли видеть его в журнале сборки? Я выполняю runner = TestRunner.withTextOutput ;, но ничего не выходит на стандартный уровень. как вы проводите тесты? просто используйте командной строки? –

ответ

0

Что я делаю для себя, пишет как в файле, так и в выходном файле TeamCity. Вы можете сделать «на лету» или в конце файла записи, сбросить его на stdout.

0

пару вариантов я вижу Решая это на стороне MATLAB (я не могу быть в состоянии говорить с APIs Teamcity как хорошо): TAPPlugin

  1. Redirect MATLAB к какой-то файл, а затем в качестве последующего шага сборки печати этот файл в stdout. Возможно, таким образом вы, по крайней мере, могли бы поддерживать поток MATLAB TAP Stream в одном смежном фрагменте журнала TeamCity.
  2. Использовать MATLAB's XML plugin для производства вывода в стиле JUnit. Затем вы создаете соответствующий файл xml из вашего запуска MATLAB, а затем добавляете в TeamCity функцию сборки (а не шаг сборки, другую страницу в конфигурации сборки) для обработки XML-стиля JUnit. Функция построения, которую вы хотите, - это обработка отчетов XML.

Есть плюсы/минусы, чтобы рассмотреть между JUnit и форматом TAP, но если ваш подробный журнал TeamCity вызывает проблемы с выходом TAP поддержка JUnit в TeamCity не зависит от журнала сборки, и это может быть большим плюс для вас.

0

Это, как я DIT, и она работает просто отлично:

мой тестовый файл 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%%