Ошибка подключаемого модуля Jenkins MSTest: java.lang.NoClassDefFoundError: hudson/maven/MavenBuild

Я пытался настроить Jenkins для работы с моим проектом C# для автоматического тестирования и покрытия кода. У меня есть работающее тестирование и генерация и конвертация файлов покрытия кода с использованием CoverageConverter.exe (без использования каких-либо плагинов - только прямые пакетные файлы и необработанные EXE-файлы), но когда я добавляю шаг после сборки MSTest для отображения данных в Jenkins, я получаю следующую ошибку:

[MSTEST-PLUGIN] Processing test results in file(s) **/*.trx
MSTest: D:\Jenkins\jobs\Framework\workspace\TestResults\james_CD 2016-03-18 20_05_13.trx
ERROR: Step ‘Publish MSTest test result report’ aborted due to exception: 
java.lang.NoClassDefFoundError: hudson/maven/MavenBuild
    at hudson.plugins.emma.EmmaPublisher.perform(EmmaPublisher.java:103)
    at hudson.plugins.mstest.MSTestPublisher.perform(MSTestPublisher.java:134)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:782)
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:723)
    at hudson.model.Build$BuildExecution.post2(Build.java:185)
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:668)
    at hudson.model.Run.execute(Run.java:1763)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:98)
    at hudson.model.Executor.run(Executor.java:410)
Caused by: java.lang.ClassNotFoundException: hudson.maven.MavenBuild
    at jenkins.util.AntClassLoader.findClassInComponents(AntClassLoader.java:1376)
    at jenkins.util.AntClassLoader.findClass(AntClassLoader.java:1326)
    at jenkins.util.AntClassLoader.loadClass(AntClassLoader.java:1079)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 11 more

Несмотря на ошибку, график "Test Result Trend" отображается на странице проекта и выглядит правильным, и есть раздел для "Trend Coverage Trend", но на нем нет ссылки на изображение.

Я запускаю тесты и покрытие кода, используя следующий фрагмент кода:

@ECHO "`nRunning tests`n---------------------------" 
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" TestFramework\bin\Release\TestFramework.dll /EnableCodeCoverage /Settings:TestFramework\Settings.testsettings /Logger:trx
@ECHO %ERRORLEVEL%
REM @IF %ERRORLEVEL% NEQ 0 EXIT 1

@ECHO "`n`nConverting code coverage results`n---------------------------" 
@IF EXIST emma\. rd emma /s /q >nul
md emma
del emma\temp.coverage /Q >nul
for /R TestResults %%f in (*.coverage) do copy "%%f" emma\temp.coverage /B /Y
"C:\Program Files\JenkinsUtilities\CoverageConverter\CoverageConverter.exe" /in:emma\temp.coverage /out:emma\coverage.xml /xsl:"C:\Program Files\JenkinsUtilities\MSTestCoverageToEmma.xsl"
goto END

Я скопировал базовый процесс из другой системы Jenkins, где работает аналогичный проект, но не смог найти каких-либо существенных различий между системами.

Я уже попробовал: 1. Обновление Java 2. Обновление Jenkins 3. Удаление и переустановка плагинов MSBuild, MSTest, MSTest Runner, VSTest Runner и Maven Integration.

Я чувствую, что я действительно близок к этому моменту, но у меня очень мало опыта работы с Java, поэтому я не могу исправить эту ошибку на данный момент. Может кто-нибудь помочь мне диагностировать ClassNotFoundException?

1 ответ

После отчаянного прочесывания журналов и установки Eclipse (на другом компьютере) для просмотра java-файлов он неожиданно начал работать. Возможно, это было связано с установкой плагина JaCoCo, который я также установил, когда заметил, что плагин Emma Line Coverage, который я ранее установил для отображения результатов, говорит о том, что он был заменен плагином JaCoCo.

Другие вопросы по тегам