自動テストとコード カバレッジを行うために、C# プロジェクトと連携するように Jenkins をセットアップしようとしています。私はテスト作業とコードカバレッジファイルを使用して生成および変換してCoverageConverter.exe
います(プラグインを使用せず、ストレートバッチファイルと生のEXEのみ)が、データをJenkinsに表示するためにMSTestビルド後のステップを追加すると、次のエラーが表示されます。
[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
エラーにもかかわらず、「テスト結果の傾向」グラフはプロジェクト ページに表示され、正しいように見えます。「コード カバレッジの傾向」のセクションがありますが、画像のリンクが壊れています。
次のバッチ スニペットを使用して、テストとコード カバレッジを実行しています。
@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 統合プラグインのアンインストールと再インストール。
この時点で私は本当に近づいているように感じますが、Java の経験がほとんどないため、この時点でこのエラーを修正するのに途方に暮れています。ClassNotFoundException の診断を手伝ってくれる人はいますか?