命令列執行Nunit

xuxubaby發表於2013-10-14

與窗體介面比較,控制檯介面有一些額外的選項。命令列必須一直指定一個或多個檔名。控制檯介面會一直建立一個XML格式的測試結果。預設的檔案取名為TestResult.xml,並且放置在工作目錄裡。

:預設的,nunit-console程式不會增加到你的路徑裡。如果有必要,你必須手動的增加它。

:在Windows作業系統下,選項的字首要麼是斜槓,要麼是一個連線符號。在Linux下,必須使用連線符號。帶值的選項可以使用等於符號,冒號或空格來將選項和值分開。

指定一個程式集

控制檯程式必須一直有一個指定的程式集或者工程。為了執行nunit.tests.dll包含的測試,使用下面的命令列:

        nunit-console nunit.tests.dll

 

為了通過Visual Studio工程執行nunit.tests.dll的測試,使用:

        nunit-console nunit.tests.csproj

 

為了通過你定義的NUnit測試工程執行同樣的測試,使用: 

        nunit-console nunit.tests.nunit

 

指定一個程式集和Fixture

當指定一個fixture,你必給定包含測試fixture的程式集全路徑名。例如,為了執行nunit.tests.dll的NUnit.Tests.AssertionTests,使用下面的命令:

        nunit-console /fixture:NUnit.Tests.AssertionTests nunit.tests.dll

 

/fixture後指定的名稱可以為一個TestFixture類,一個有效的套件(使用Suite屬性)或者一個名稱空間的名稱。如果給定的是一個名稱空間,在此名稱空間下的所有fixture都將執行。本選項也可以和Visual Studio或NUnit工程一起使用。

指定CLR版本

編寫的大多數應用程式都在某個特定版本的CLR下執行。少數設計為可以在多版本下正確操作。不管哪一種,能指定CLR版本進行執行測試是非常重要的。

當僅有一個CLR版本使用時,nunit-gui以及nunit-console的配置檔案可以指定該版本。為了選擇CLR更加方便,你可以使用提供的clr.bat命令來指定NUnit在那一個版本下執行。

例如,在.net 2.0 framework的RTM版本下,為了執行 nunit.tests.dll的測試,使用:

       clr net-2.0 nunit-console nunit.tests.dll

clr.bat在NUnit 的bin目錄下 .你可以將它放在你自己的路徑下面,或者將它拷貝到一個恰當的位置。輸入 clr /?獲取一系列選項:

:如果你在配置檔案裡使用一個<startup>塊,它會預先使用本選項。

:本命令指定為 Microsoft .Net  framework. Mono框架提供其他方式來指定執行命令時所 使用的版本。

指定測試目錄為Include或Exclude

NUnit2.2提供  CategoryAttribute屬性將某個測試  指定到一個或多個目錄中。在執行測試時,可以使用/include以及/exclude選項包含或排除目錄。下 面的命令僅僅執行在BaseLine目錄下的測試案例:   

        nunit-console myassembly.dll /include:BaseLine

 

下面的命令列執行所有測試,除了那些在Database目錄下的:

        nunit-console myassembly.dll /exclude:Database            

 

可以在某個選項中指定多個目錄,使用逗號來分隔它們.

:在當前釋出版本中,你可以選擇包含或排除一執行中的目錄,但不能2者都選擇。為了更清楚的理解目錄選擇是如何工作的,回顧一下Category以及Explicit屬性的文件。

重定向輸出

在控制檯顯示的輸出可以重定向到檔案。它包含了測試程式建立的輸出,同時也包含了NUnit自己建立的。下面的命令會將標準輸入重定向到TestResult.txt. 

        nunit-console nunit.tests.dll /out:TestResult.txt

 

下面的命令將標準的錯誤輸出重定向到StdErr.txt檔案。 

        nunit-console nunit.tests.dll /err:StdErr.txt

 

對測試輸出進行標記

每個測試的輸出會跟著前面一個測試的輸出之後。你可以使用/label選項建立一個標識標籤在每個測試案例的開始處顯示。

指定XML檔名

正如上面描述的  ,控制檯程式會建立一個測試結果的XML形式。為了將輸出檔名改為"console-test.xml“,使用下面的命令列選項:  

        nunit-console /xml:console-test.xml nunit.tests.dll

 

指定轉化(Transform)檔案

控制檯使用XSLT將測試的結果轉化為XML檔案。當程式執行時,可以在螢幕上列印他們。控制檯有一個預設的轉化形式,它是可執行的一部分。為了指定你自己的命名為"myTransform.xslt"的轉化形式,使用下面的命令列選項:

        nunit-console /transform:myTransform.xslt nunit.tests.dll

 

:為了得到更多測試結果的資訊,參看XML schema。該檔案為Results.xsd,可執行檔案同處一目錄。預設的轉化為Summary.xslt ,它在核心原始碼目錄 。

指定執行哪一個配置

方執行Visual Studio或NUnit工程的測試時,會預設的載入找到的第一個配置。通常是Debug。載入的配置也可以使用/config開關來控制。下面將載入nunit.tests.dll的Release配置,並在之下執行測試。

        nunit-console nunit.tests.csproj /config:Release

 

:當直接載入一個程式集時,該選項沒有任何影響。

指定多個程式集

你可以使用控制檯介面執行多個程式集的測試  ,甚至你並沒有定義一個NUnit測試工程檔案時。下面的命令會執行 assembly1.dll,   assembly2.dll 和assembly3.dll包含的測試。

nunit-console assembly1.dll assembly2.dll assembly3.dll

:你可以在命令列裡指定多個程式集,不僅是多個NUnit,也可以是Visual Studio工程。更進一步,你可以不用指定一個帶有多個程式集的NUnit或Visual Studio工程。/fixture選項可以和多個程式集一起使用,但是簡單指定包含fixture的程式集可能更加有效。

其他選項

/noshadow選項禁止程式集的影拷貝,以改善其效能。

/thread選項會建立一個單獨的執行緒供執行測試用。在某些情況下這是有必要的,例如測試必須在一特殊型別的公寓裡執行。通過在一獨立的執行緒裡執行,在配置檔案的元素下的ApartmentState和ThreadPriority設定會非常有用。如果無執行緒建立,他們會被忽略,apartment和控制檯程式的一樣。

:控制檯程式的apartment狀態可以在不同的釋出版本中改變,因此需要一個公寓的使用者可以利用該設定,而不是依靠預設的。

/wait選項讓程式在退出前,等待使用者的輸入。當使用快捷方式執行nunit-console時非常有用。

/xmlconsole選項在控制檯裡顯示未經處理的XML輸出,而不是轉化它。當除錯XML格式的問題時非常有效。

/nologo選項禁止在程式啟動時顯示版權資訊。

/help/?選項顯示一個簡要的幫助資訊。

如何命令列列印出來的內容太多,而這些又不是我們想要的,我們最關注的的測試出錯的結果,這時候,我們可以將列印的結果輸出到指定目錄,比如: nunit-console.exe /out:c:\UserCenterLog.txt 該命令是把測試正常列印出來的程式碼全部儲存到c:\UserCenterLog.txt,這時候,命令列視窗只會輸出測試的結果以及測試出錯有問題的程式碼:如下:

 

C:\tools\tomcat6\webapps\hudson-3.0.0\tempdir\jobs\UserCenter_TA\workspace>C:\tools\NUnit-2.6.2\bin\nunit-console.exe /out:c:\1.txt C:\tools\tomcat6\webapps\hudson-3.0.0\tempdir\jobs\UserCenter_TA\workspace\UserCenterTester\CQTest\CQTest\TestUserCentre\bin\Debug\TestUserCentre.dll 
NUnit-Console version 2.6.2.12296
Copyright (C) 2002-2012 Charlie Poole.
Copyright (C) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov.
Copyright (C) 2000-2002 Philip Craig.
All Rights Reserved.

Runtime Environment - 
   OS Version: Microsoft Windows NT 6.1.7600.0
  CLR Version: 2.0.50727.4927 ( Net 3.5 )

ProcessModel: Default    DomainUsage: Single
Execution Runtime: net-3.5
....................F.F.F.....F.F.F.................................................................................................................................F......................................................................................................................................................................................................F......................................................................................................................................................................................................................................................
Tests run: 602, Errors: 2, Failures: 6, Inconclusive: 0, Time: 195.1774164 seconds
  Not run: 0, Invalid: 0, Ignored: 0, Skipped: 0

Errors and Failures:
1) Test Failure : TestUserCenter.TestSiteService.GetGamePasspod
   GetGamePasspod is null 
at TestUserCenter.TestSiteService.GetGamePasspod() in E:\EveryDayWork\2013\3\3-27\UserCenterTest\CQTest\CQTest\TestUserCentre\TestSiteService.cs:line 764

2) Test Failure : TestUserCenter.TestSiteService.GetGamePasspod_gameId
   GetGamePasspod is null 
at TestUserCenter.TestSiteService.GetGamePasspod_gameId() in E:\EveryDayWork\2013\3\3-27\UserCenterTest\CQTest\CQTest\TestUserCentre\TestSiteService.cs:line 785

3) Test Failure : TestUserCenter.TestSiteService.GetGamePasspods
   is null 
at TestUserCenter.TestSiteService.GetGamePasspods() in E:\EveryDayWork\2013\3\3-27\UserCenterTest\CQTest\CQTest\TestUserCentre\TestSiteService.cs:line 807

4) Test Error : TestUserCenter.TestSiteService.GetUserCountAndFeeByDay
   hessiancsharp.io.CHessianException : The service has no method named: GetUserCountAndFeeByDay__2
   at hessiancsharp.client.CHessianMethodCaller.DoHessianMethodCall(Object[] arrMethodArgs, MethodInfo methodInfo)
   at hessiancsharp.client.CHessianProxyStandardImpl.Invoke(IMessage msg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at BkNew.UserCenter.Common.IService.IUserTradingService.GetUserCountAndFeeByDay(String userId, DateTime time)
   at TestUserCenter.TestSiteService.GetUserCountAndFeeByDay() in E:\EveryDayWork\2013\3\3-27\UserCenterTest\CQTest\CQTest\TestUserCentre\TestSiteService.cs:line 104

5) Test Error : TestUserCenter.TestSiteService.GetUserCountAndFeeByMonth
   hessiancsharp.io.CHessianException : The service has no method named: GetUserCountAndFeeByMonth__2
   at hessiancsharp.client.CHessianMethodCaller.DoHessianMethodCall(Object[] arrMethodArgs, MethodInfo methodInfo)
   at hessiancsharp.client.CHessianProxyStandardImpl.Invoke(IMessage msg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at BkNew.UserCenter.Common.IService.IUserTradingService.GetUserCountAndFeeByMonth(String userId, DateTime time)
   at TestUserCenter.TestSiteService.GetUserCountAndFeeByMonth() in E:\EveryDayWork\2013\3\3-27\UserCenterTest\CQTest\CQTest\TestUserCentre\TestSiteService.cs:line 191

6) Test Failure : TestUserCenter.TestSiteService.GetUserTradingInfo
   GetUserTradingInfo is null
at TestUserCenter.TestSiteService.GetUserTradingInfo() in E:\EveryDayWork\2013\3\3-27\UserCenterTest\CQTest\CQTest\TestUserCentre\TestSiteService.cs:line 232

7) Test Failure : TestUserCenter.TestUserService.申請貴賓服務功能已關閉
   System.Exception was expected
8) Test Failure : TestUserCenter.TestUserService.GetUserSecurityLevel
     Expected: False
  But was:  True

at TestUserCenter.CqComp.ThanResults(Boolean ExpectedValues, Boolean TestResults) in E:\EveryDayWork\2013\3\3-27\UserCenterTest\CQTest\CQTest\TestTools\CqComp.cs:line 135
at TestUserCenter.TestUserService.GetUserSecurityLevel() in E:\EveryDayWork\2013\3\3-27\UserCenterTest\CQTest\CQTest\TestUserCentre\TestUserService.cs:line 5251



C:\tools\tomcat6\webapps\hudson-3.0.0\tempdir\jobs\UserCenter_TA\workspace>exit 8 
Email was triggered for: Failure
Sending email for trigger: Failure


 

相關文章