2011-01-06 8 views
3

CruiseControl.NetのセットアップでNantを使って以前のログを消去した後、VSプロジェクトのmsbuildを起動し、最後にnunit-consoleを実行してテストを実行します。CruiseControl.NetとNUnit - テストは終了しましたが、タスクはありませんか?

これは数秒間(罰金)のために構築されてから、約600分のテストを実行するまでホップしているようです(約1分かかります)。しかし、ログファイルがあるにもかかわらず、そこには何も置かずに10分間放置すると、ビルドされたタイムアウトとプロセスが終了します。 CruiseControl.NET Webページでは、結果は失敗したものとして表示されますが、例外はありません。

ThoughtWorks.CruiseControl.Core.Tasks.BuilderException: Command Line Build timed out (after 600 seconds) 
    at ThoughtWorks.CruiseControl.Core.Tasks.ExecutableTask.Execute(IIntegrationResult result) 
    at ThoughtWorks.CruiseControl.Core.Tasks.TaskBase.Run(IIntegrationResult result) 
    at ThoughtWorks.CruiseControl.Core.Project.RunTask(ITask task, IIntegrationResult result, Boolean isPublisher) 
    at ThoughtWorks.CruiseControl.Core.Project.RunTasks(IIntegrationResult result, IList tasksToRun, Dictionary`2 parameterValues) 
    at ThoughtWorks.CruiseControl.Core.Project.Run(IIntegrationResult result) 
    at ThoughtWorks.CruiseControl.Core.IntegrationRunner.Build(IIntegrationResult result) 
    at ThoughtWorks.CruiseControl.Core.IntegrationRunner.Integrate(IntegrationRequest request) BaseDirectory: , Executable: C:\Program Files\NUnit 2.5.8\bin\net-2.0\nunit-console.exe 

ccnet.configスクリプトは次のとおりです。私はタイムアウトを3分に変更しようとしましたが、もしそれが何かと関係していたとしても、それはうまくいきました(それはありませんでした)。優雅に終了!

私はコマンドラインでコマンドを実行し、実行に約1分かかります。どんな理論?

<cruisecontrol xmlns:cb="urn:ccnet.config.builder"> 

    <project name="CodeTests"> 
     <workingDirectory>C:\Source\Wholesale\Comp.EventControl.TestingFramework\</workingDirectory> 
     <artifactDirectory>C:\Source\Wholesale\Comp.EventControl.TestingFramework\</artifactDirectory> 

    <prebuild> 
    <!-- clean nunit output to avoid CCNET reporting 
      about previous build tests if current build fails --> 
     <nant> 
     <executable>C:\Nant\bin\nant.exe 
     </executable> 
     <baseDirectory>C:\Source\Wholesale\Comp.EventControl.TestingFramework</baseDirectory> 
     <nologo>false</nologo> 
     <buildFile>nant.build</buildFile> 
     <targetList> 
      <target>cleanNunit</target> 
     </targetList> 
     </nant> 
    </prebuild> 

    <tasks> 
     <msbuild> 
      <executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 
      </executable> 
      <workingDirectory>C:\Source\Wholesale\Comp.EventControl.TestingFramework\CodeReboot 
      </workingDirectory> 
     <projectFile>CodeReboot.sln</projectFile > 
      <buildArgs>/noconsolelogger 
      /v:quiet 
      /noconlog 
      /p:Configuration=Debug 
      /p:ReferencePath="C:\Program Files\NUnit 2.5.8\bin;C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0" 
      /p:AdditionalReferencePath="C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0" 
      </buildArgs> 
      <targets>ReBuild</targets > 
      <timeout>180</timeout > 
      <logger>c:\Program Files\CruiseControl.NET\server\Rodemeyer.MsBuildToCCNet.dll</logger> 

     </msbuild> 
     <exec> 
      <executable>C:\Program Files\NUnit 2.5.8\bin\net-2.0\nunit-console.exe 
      </executable > 
      <buildArgs>/xml:C:\Source\Wholesale\Comp.EventControl.TestingFramework\nunit-results.xml 
      /nologo C:\Source\Wholesale\Comp.EventControl.TestingFramework\CodeReboot\CodeReboot\bin\Debug\CodeReboot.dll 
      </buildArgs> 
     </exec> 
    </tasks> 
    <publishers> 
     <merge> 
     <files> 
      <file>C:\Source\Wholesale\Comp.EventControl.TestingFramework\nunit-results.xml 
      </file> 
     </files> 
     </merge> 
     <xmllogger /> 
     <statistics /> 
     <artifactcleanup cleanUpMethod="KeepLastXBuilds" 
     cleanUpValue="20" /> 
    </publishers> 

    </project> 
</cruisecontrol> 
+0

テストのいずれかで新しいグラフィカルウィンドウが開きますか? –

+0

ではなく、すべてのAPIコマンドラインテストです。 –

答えて

4

あなたはどのバージョンのnunitを使用していますか?テストの最後にnunit-agentをハングアップさせる2.5.7/2.5.8バージョンにはいくつかの問題がありました。私はこの問題を抱え、古いバージョンのnunitに戻り、ハングの問題はなくなりました。 2.5.9のリリースノートでは、「602761 nunit-agentがテスト完了後にハングアップする」という問題が修正されています。私はまだ2.5.9にアップグレードしていないが、それはあなたの問題を解決するかもしれない。

+0

ああ良い見つける! 2.5.9を試してみると、それが失敗した場合は以前に使った2.4.7に戻すことができます。報告する。 –

+0

+1000,2.5.9、ハングアウトをソートして、今すぐうまく動作します。これで、パブリッシャのマージファイルの部分を整理するだけです。どうもありがとう! –

+0

ビルドサーバは、ローカルの開発者マシンと同じバージョンのnunitを使用しましたか? –

1

まず、問題をローカルに複製してください。テストは正しく実行され、正常に終了しますか?それらをローカルで実行して、nunitプロセスがハングアップしているかどうかを確認します。

テストがローカルで正常に実行されている場合は、ビルドサーバーが停止しているテスト、またはすべてのテストが完了しているかどうかを試してみてください。ビルドスクリプトをローカルで実行できない場合は、診断するのが少し難しくなります。

私たちのテストがスレッドコードで詰まっていた頃には、テスト(またはテスト対象のコード)がスレッドを作成していて、それらをシャットダウンしてNUnitをハングさせることがほとんどでした。スレッディングの問題は、非決定論的であるため、より多くのコアを持つマシン(ビルドサーバーなど)で実行する場合にのみ表示される可能性があるため、問題があります。

スレッド/外部依存関係のテストがある場合は、最初にそれらを無効にすることを試みます(600テストには外部依存関係やスレッドが含まれていることが分かります)実行するには1ms)。

+0

dosウィンドウでローカルに実行しました。実行に約1分かかりますが、失敗したテスト(すべてのAPIテスト)の例外がいくつかありますが、すべて正常に実行されます。 –

+0

スクリプトを使って終了します。ログファイルがあり、私はそれを見ることができますが、タイムアウトするまでプロセスはハングアップします。 –

+0

開発者にチェックされている限り、彼らが知っている限り、マルチスレッド化は行われていません。 –