Jenkins job dsl и интеграция MSTest

Плагин Jenkins Job DSL — чрезвычайно удобный способ хранения CI. config в репозитории и меняйте его от ветки к ветке.

Вопрос - есть ли естественный или близкий к естественному способ запускать тесты MSTest, парсить результаты и отображать их.

Прямо сейчас я делаю вызов powershell, но это дает мне только журналы, а не интеграцию с пользовательским интерфейсом.

def testSomeProjectJob =  job(testSomeProjectJobName) {
    steps { 
      powerShell("& ${vstest} '${root}/SomeProject/SomeProject.Tests/bin/Debug/SomeProject.Tests.dll' ")
    }
}

Может есть паблишер или прикол с шаблонизацией, или какие-то советы по написанию плагина к JOB DSL для этого


UPD: окончательный шаблон сценария для MSTest и VSTest с использованием @daspilker answer, jenkins плагин xUnit и archiveXUnit

  job('RunTests') {
      steps {
           // VSTEST
           powerShell("& ${vstest} 'path/to/Tests.dll' /logger:trx ")
           // Or MSBUILD
            powerShell("& ${msbuild} /testcontainer:'path/to/Tests.dll' ")
      }
      publishers {
        archiveXUnit {
          msTest {
            pattern('**/*.trx')
            // deleteOutputFiles()
          }
        }
      }
    }

person Andrey Ershov    schedule 08.01.2016    source источник


Ответы (2)


Использование шага PowerShell — хорошее начало. Установите подключаемый модуль xUnit для анализа и отображения результатов. Он может анализировать все виды результатов тестов, включая MSTest. И вы можете использовать DSL для настройки подключаемого модуля.

Пример:

job('example') {
  steps {
    powerShell('...')
  }
  publishers {
    archiveXUnit {
      msTest {
        pattern('path/to/test/results')
      }
    }
  }
}
person daspilker    schedule 08.01.2016

Это для VSTest, но мне пришлось использовать блок конфигурации, чтобы иметь возможность использовать его в заданиях DSL.

static Closure useVsTest(List<String> dlls) { return { it / 'builders' << 'org.jenkinsci.plugins.vstest__runner.VsTestBuilder' { vsTestName 'VS 14.0' testFiles dlls.join('\n') settings '' testCaseFilter '' enablecodecoverage false useVsixExtensions true platform 'x86' otherPlatform '' framework 'framework45' otherFramework '' logger 'trx' otherLogger '' cmdLineArgs '/TestAdapterPath:"."' failBuild true } } }

person Tanner Watson    schedule 16.06.2016
comment
Это очень удобно! - person Andrey Ershov; 17.06.2016