2009-11-05 47 views
0

爲了切切實實,TeamCity .NET NUnitLauncher能夠處理微軟的csproj文件嗎?TeamCity的.NET NUnitaddin可以處理csproj文件嗎?

我問這個問題,因爲以下幾點。

我有一個NANT構建腳本。在這個腳本中,我有一些使用nunit-console.exe(隨NUnit v2.5.2發貨)的測試。

在我的nant創建文件測試的一個例子是:

<target name="x.Commons.Tests" depends="xCore"> 
<exec program="${nunit-console.exe}" commandline="${nunit-console.args} Core\x.Commons.Tests\x.Commons.Tests.csproj" failonerror="${nunit-console.failonerror}"/> 
</target> 

FailOnError設置爲false,和NUnit的-console.args被設置爲 '/ NOLOGO'。

當我在本地機器上運行這些測試時,我得到測試輸出。但是,當我指示TeamCity構建我的NAnt構建文件並指示它處理測試目標時,我沒有向TeamCity輸出測試結果。我可以在日誌中看到nunit-colsole.exe正在生成測試結果輸出,但是我在TeamCity儀表板中沒有看到這一點。

閱讀後我發現一些文章指出需要額外的步驟才能將此輸入輸入到TeamCity中。因此,我修改了我的測試:

<target name="x.Configuration.Tests" depends="xCore"> 
    <mkdir dir="C:\Tools\NUnit\bin\net-2.0\addins"/> 
    <copy file="${teamcity.dotnet.nunitaddin}-2.5.0.dll" todir="C:\Tools\NUnit\bin\net-2.0\addins"/> 
    <copy file="${teamcity.dotnet.nunitaddin}-2.5.0.pdb" todir="C:\Tools\NUnit\bin\net-2.0\addins"/> 
    <exec program="${nunit-console.exe}" commandline="${nunit-console.args} Core\x.Configuration.Tests\x.Configuration.Tests.csproj" failonerror="${nunit-console.failonerror}"/> 
</target> 

請注意,我還確保了標籤包含「加載項」的條目。

但是,和以前一樣,我可以看到測試正在運行,因爲nunit-console.exe在日誌中顯示其結果,但Im沒有得到TeamCity的輸出。

我的問題的答案,或任何幫助,將不勝感激!

回答

1

使用

<copy file="${teamcity.dotnet.nunitaddin}-2.5.2.dll" todir="C:\Tools\NUnit\bin\net-2.0\addins"/> 
<copy file="${teamcity.dotnet.nunitaddin}-2.5.2.pdb" todir="C:\Tools\NUnit\bin\net-2.0\addins"/> 

TeamCity的加載項的NUnit的版本應該匹配NUnit的版本。請檢查您的TeamCity版本是否支持NUnit 2.5.2或下載較新的版本。

+1

嗨尤金, 我安裝了TeamCity v2.5.4,我發現它沒有NUnit 2.5.2的nunitaddin。這是不尋常的,因爲NUnit v2.5.2已經存在了一年多了!我正在下載TeamCity 2.5.5,希望它會有2.5.2的nunitaddin。 但是,在您的建議之後,我將NUnit的版本更改爲2.5.0,我很高興地說我的測試結果顯示在TeamCity中! 我很感激幫助! –

+0

不錯!似乎你將TeamCity 4.5.x稱爲「TeamCity v2.5.x」。據我所知,NUnit 2.5.2於2009年8月10日發佈。http://nunit.org/index.php?p=releaseNotes&r=2.5.2 –

+1

尤金,你是對的,NUnit 2.5.2是09年8月發佈。我一直對所有這些不同產品的版本感到困惑!感謝您的幫助並保持JetBrains的良好工作;) –

1

我們這樣做的方式是利用TeamCity自動獲取.csproj文件中的NUnit測試的功能。

  • 首先,您需要安裝MSBuild Community Tasks
  • 然後,設置您的.csproj文件的方式如下:

    • 後<項目有這個右>

      <導入項目=「$(MSBuildExtensionsPath)\ MSBuildCommunityTasks \ MSBuild.Community .Tasks.Targets「/ >

    • 創建的ItemGroup:

      <ItemGroup> < TestAssembly Include =「path/to/binary。DLL」/> < /的ItemGroup >

    • 創建NUnit的目標:

      <目標名稱= 「NUnit的」 > < NUnit的裝配體= 「@(TestAssembly)」/ > < /目標>

  • 然後,在TeamCity中,在項目設置的「Runner」部分中,cho OSE 的MSBuild作爲亞軍,並在目標場同時指定構建NUnit的爲目標

    目標:構建NUnit的

的TeamCity應該拿起單元測試自動在下一個版本。

+1

乾杯的答覆博士然而,我使用NAnt生成亞軍不是MSBuild所以這個建議是不適用不是我的問題。 這是一個令人沮喪的問題,因爲我希望TeamCity能夠自動提取測試輸出。 –

相關問題