2009-12-29 141 views
4

我正在使用NUnit 2.5和NAnt 0.85來編譯.NET 3.5庫。由於NAnt 0.85不支持.NET 3.5以上的版本,因此我已將3.5框架的條目添加到NAnt.exe.config。NAnt未運行NUnit測試

'MyLibrary'構建,但是當我點擊「測試」目標執行NUnit測試時,它們都沒有運行。

[nunit2] Tests run: 0, Failures: 0, Not run: 0, Time: 0.012 seconds 

下面是我NAnt.build文件中的條目爲構建和運行測試:

<target name="build_tests" depends="build_core"> 
    <mkdir dir="Target" /> 
    <csc target="library" output="Target\Test.dll" debug="true"> 
     <references> 
      <include name="Target\MyLibrary.dll"/> 
      <include name="Libraries\nunit.framework.dll"/> 
     </references> 
     <sources> 
      <include name="Test\**\*.cs" /> 
     </sources> 
    </csc> 

</target> 

<target name="test" depends="build_tests">     
    <nunit2> 
     <formatter type="Plain" /> 
     <test assemblyname="Target\Test.dll" /> 
    </nunit2> 
</target> 

有一些版本的問題,我需要知道的? Test.dll在NUnit GUI中運行良好。

測試dll是絕對被人發現,因爲如果我移動時,我收到以下錯誤:

Failure executing test(s). If you assembly is not build using NUnit 2.2.8.0... Could not load file or assembly 'Test' or one of its dependencies...

我將不勝感激,如果任何人都可以點我在正確的方向或描述他們有一個與之相似的情況遇到。

編輯我已經嘗試過NAnt 0.86 beta 1,並且會出現同樣的問題。

回答

9

Nunit2 Nant任務仍然使用Nunit 2.2庫進行硬編碼。

見文檔:http://nant.sourceforge.net/release/latest/help/tasks/nunit2.html

"Runs tests using the NUnit V2.2 framework"

您可以與集綁定重定向排序了這一點,但我認爲該建議只是使用南特<EXEC>任務,並調用NUnit的2.5控制檯亞軍直。

例如爲:

<!-- Run Unit Tests under NUnit 2.5 --> 
    <exec program="${LibraryPath}\NUnit\2.5.7\nunit-console.exe"> 
     <arg value="${SourcePath}\ProjectName.Tests\bin\Release\ProjectName.Tests.dll" /> 
    </exec> 

簡單多了呢。

我通過TeamCity運行此和單元測試輸出似乎仍然正常行爲。

+0

謝謝,它有助於瞭解通常的解決方法! – 2012-05-29 17:53:26

1

我沒有手動編輯NAnt 0.85配置的經驗。也許你應該嘗試NAnt的latest nightly(0.86 beta 2)。使用這個版本我們建立了所有的.NET 3.5項目,沒有任何抱怨。

0

爲了進行健全性檢查,您是否確保在測試類中包含相應的NUnit屬性?這些屬性是NUnit根據哪些鉤子確定哪些類是測試裝置的,以及測試用例是什麼方法。

在過去,我犯了一個錯誤,不包括適當的屬性,並運行測試沒有明顯的結果。這是一件簡單的事情,但只是確保。