質問

この作品を手に入れる機会はありますか?テストを NAnt の nunit2 タスクで実行したいと考えています。さらに、テストを再度実行せずに NCover を実行したいと考えています。

役に立ちましたか?

解決

私はそれを考え出した。NUnit ランチャーのパスを TeamCity 独自のパスに変更します。以下に例を示します。

    <mkdir dir="${build}/coverage" failonerror="false"/>

    <!-- run the unit tests and generate code coverage -->
    <property name="tools.dir.tmp" value="${tools.dir}"/>
    <if test="${not path::is-path-rooted(tools.dir)}">
        <property name="tools.dir.tmp" value="../../${tools.dir}"/>
    </if>

    <property name="nunitpath" value="${lib.dir}/${lib.nunit.basedir}/bin/nunit-console.exe"/>
    <property name="nunitargs" value=""/>
    <if test="${property::exists('teamcity.dotnet.nunitlauncher')}">
        <property name="nunitpath" value="${teamcity.dotnet.nunitlauncher}"/>
        <property name="nunitargs" value="v2.0 x86 NUnit-2.4.8"/>
    </if>

    <ncover program="${tools.dir.tmp}/${tools.ncover.basedir}/ncover.console.exe"
       commandLineExe="${nunitpath}"
       commandLineArgs="${nunitargs} ${proj.name.unix}.dll"
       workingDirectory="${build}"
       assemblyList="${proj.srcproj.name.unix}"
       logFile="${build}/coverage/coverage.log"
       excludeAttributes="System.CodeDom.Compiler.GeneratedCodeAttribute"
       typeExclusionPatterns=".*?\{.*?\}.*?"
       methodExclusionPatterns="get_.*?; set_.*?"
       coverageFile="${build}/coverage/coverage.xml"
       coverageHtmlDirectory="${build}/coverage/html/"
    />

ご覧のとおり、そこには独自の変数がいくつかありますが、何が起こっているのか理解できるはずです。関心のあるプロパティは、teamcity.dotnet.nunitlauncher です。詳細については、ここで読むことができます http://www.jetbrains.net/confluence/display/TCD4/TeamCity+NUnit+Test+Launcher.

他のヒント

NCover で NUnit を実行させてみてはいかがでしょうか?まったく同じテスト結果が得られます。また、テスト以外で NCover を実行するときに、正確に何を測定しようとしているのでしょうか?古いコードや参照されていないコードを見つける方法は他にもあります。

私も同じことをしなければなりません。私たちが望むことができる最善のことは、TeamCity に付属する NUnit jar ファイルを壊してオープンし、NUnit2 と NCover を統合するカスタム タスクを記述することだと思います。そうでなければ良いのですが、NUnit2 タスクは目に見える出力を生成しないため、TeamCity は明らかにテスト結果の StdOut を読み取っていません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top