1

現時点では、Jenkins でテスト結果を取得したいと考えています。私が対処している唯一の問題は、Junit テストから XML レポートを取得できることです。だから私の質問は:

  1. Jenkins でテストを開始して結果を取得する可能性はありますか?

  2. または、Ant を使用して xml レポートを生成することは可能ですか? 私はこれを持っていたが、それを100%理解していないので:

私のテストへのパス:

  • nl\company\cms\plugin\test\AllTests.java (テスト スイート)
  • CopyOfMyTestClass.java (単一のテスト クラス)
  • MyTestClass.java (単一のテスト クラス)

私のライブラリへのパス:

  • lib\junit-4.10.jar
  • lib\ant.jar (これは私のプラグインに必要です。XML レポートの作成にも必要でしょうか?)

JUnit サイトから取得したこのコード: http://junit.sourceforge.net/doc/faq/faq.htm#running_6


次のことを理解しています: ${test.reports}= テスト レポートが必要な場所 ${classes}= .java ファイルが既に .class ファイルに組み込まれている bin ディレクトリ。それらを .java ファイルに転送することも可能ですか?

しかし、私は次のことをどうすればよいかわかりません:

<classpath refid="test.classpath" />

もうありがとう!

アップデート

彼は私の 3 つのテストクラスを見つけてレポートを作成しましたが、レポートのこの 3 つのクラスで同じエラーが発生します。

test.AllTests

java.lang.ClassNotFoundException: test.AllTests
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)

これは私のbuild.xmlコードです:

<property name="basedir" value="C:/CMSdot2"/>
<property name="classes" value="C:/CMSdot2/dotCMS/WEB-INF/classes/nl/company/dotcms/plugin"/>
<property name="test.reports" value="${basedir}/dotCMS/"/>
<target name="test-html">
 <junit fork="yes" printsummary="no" haltonfailure="no">
  <batchtest fork="yes" todir="${test.reports}" >
   <fileset dir="${classes}">
    <include name="**/*Test*.class" />
   </fileset>
  </batchtest>
  <formatter type="xml" />
  <classpath id="test.classpath">
   <pathelement location="lib/junit-4.10.jar"/>
  </classpath>
 </junit>
 <junitreport todir="${test.reports}">
  <fileset dir="${test.reports}">
   <include name="TEST-*.xml" />
  </fileset>
  <report todir="${test.reports}" />
 </junitreport>
</target>
4

1 に答える 1

1
  1. ${classes}クラスを指すように指定する必要があります。Javaはプログラム/junitを実行するためのクラスを必要とするため、.javaファイルでは実行できません。
  2. <classpath refid="test.classpath" />テストの実行に必要な外部ライブラリ (log4j や apache commons など) がある場合は、クラスと外部ライブラリを含める必要があります。例えば:

    <classpath id="test.classpath">
        <pathelement location="${classes}" />
        <pathelement location="lib/ther.jar"/>
    </classpath>
    
于 2012-04-10T07:25:50.610 に答える