1

継続的インテグレーションのセットアップで、CruisControl.NET をセットアップして、すべてのユニットテストを自動的に実行したいと考えています。ただし、構成ですべての unittest dll を個別に指定する必要はありません。

すべての unittest プロジェクトはすべて接尾辞付きです.Test(およびすべての非 unittest プロジェクトはそうではありません)。これらのプロジェクトからすべての単体テストを実行するように CruiseControl.NET を構成するにはどうすればよいですか (CruiseControl.NET の v1.5.7256.1 を使用しています)。

私の現在の設定の試み:

<nunit>
    <path>$(nunit.path)</path>
    <assemblies>
        <assembly>$(working.dir)\**\*.Test.dll</assembly>
    </assemblies>
</nunit>

この特定の nunit 要素に関するドキュメントを見つけるのは非常に困難です。私が見つけることができるほとんどのページは、 execnunit2または別のnunit要素またはnunit-console コマンドライン オプション の使用について話しています。

私はビルド環境を管理した経験があまりなく、次の方法ですべてのアセンブリが個別に指定された既存の構成に取り組んでいます。

<nunit>
    <path>$(nunit.path)</path>
    <assemblies>
        <assembly>$(artifact.dir)\test1.dll</assembly>
        <assembly>$(artifact.dir)\test2.dll</assembly>
    </assemblies>
</nunit>

したがって、ワイルドカードを使用して失敗しました。

編集:

コンテキストを少し示すために、構成ファイルの追加の xml を次に示します。

<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
    <project name="MyProject">
        <!-- whole bunch of other elements -->
        <tasks>
            <nunit>
                <!-- see above -->
            </nunit>
        </tasks>
    </project>
</cruiscontrol>

Mightmuke の提案の後、要素を彼の提案に置き換えようと<nunit>しましたが、次の例外が発生しました。Unable to instantiate CruiseControl projects from configuration document. Configuration document is likely missing Xml nodes required for properly populating CruiseControl configuration. Unable to load array item 'property' - Cannot convert from type System.String to ThoughtWorks.CruiseControl.Core.ITask for object with value: ""

<property>次に、 and要素を<foreach>要素の外に移動しようとしました。次に、例外が発生します。Unused node detected: <property name="nunit.filelist" value="" />

私は今、<foreach>要素とそれをどこに置くことができるかについてもっと調べようとしていますが、どういうわけか、それに関するドキュメントを見つけるのは難しいと思います.

EDIT2:

私が使用している nunit タスクのドキュメントを見つけました: http://ccnet.sourceforge.net/CCNET/NUnit%20Task.html

要素が String[] 型になるように指定します。それが何を意味するのかわかりません...しかし、例から、単数形で同じ名前の子要素のリストを含まなければならないことを意味しているようです。


PS: この質問が少し手に負えなくなってきていることを認識しています... すべてが解決したら、後で他の人に役立つように、そのような形式で編集しようとします。

4

1 に答える 1

1

これは、nunit コンソールを使用する場合の構成例です。

<property name="nunit.filelist" value="" />
<foreach item="File" property="testfile" verbose="true">
  <in>
    <items basedir=".">
      <include name="${working.dir}\**\*.Test.dll" />
    </items>
  </in>
  <do>
    <property name="nunit.filelist" value="${nunitfile.list + ' ' + testfile}" />
  </do>
</foreach>

<exec program="nunit-console-x86.exe" failonerror="true" verbose="true">
  <arg value="${nunit.filelist}" />
  <arg value="/xml=nunit-results.xml" />
  <arg value="/nologo" />
  <arg value="/nodots" />
</exec>

これはテストされておらず、皮をむくためのより良い方法がある可能性がありますが、それが出発点になることを願っています.

于 2013-01-23T21:49:34.547 に答える