【问题标题】:Jenkins MSTest-Plugin Error: java.lang.NoClassDefFoundError: hudson/maven/MavenBuildJenkins MSTest-Plugin 错误:java.lang.NoClassDefFoundError:hudson/maven/MavenBuild
【发布时间】:2016-03-19 02:27:51
【问题描述】:

我一直在尝试将 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

尽管有错误,“测试结果趋势”图表显示在项目页面上并且看起来是正确的,并且有一个“代码覆盖率趋势”部分,但图像链接已损坏。

我正在使用以下批处理 sn-p 运行测试和代码覆盖率:

@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. 更新詹金斯 3. 卸载并重新安装 MSBuild、M​​STest、MSTest Runner、VSTest Runner 和 Maven 集成插件。

我觉得我在这一点上真的很接近,但我对 Java 的经验很少,所以我现在无法纠正这个错误。谁能帮我诊断 ClassNotFoundException?

【问题讨论】:

    标签: maven jenkins msbuild vstest.console


    【解决方案1】:

    在拼命梳理日志并安装 Eclipse(在另一台机器上)以查看 java 文件后,它开始意外地工作。它可能与安装 JaCoCo 插件有关,当我注意到我之前安装的用于显示结果的 Emma Line Coverage 插件说它已被 JaCoCo 插件取代时,我也安装了该插件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 2012-07-12
      • 2019-02-11
      • 2013-05-01
      • 2018-12-25
      相关资源
      最近更新 更多