命令列執行Nunit
與窗體介面比較,控制檯介面有一些額外的選項。命令列必須一直指定一個或多個檔名。控制檯介面會一直建立一個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
相關文章
- TortoiseSVN 命令 (命令列執行工具)命令列
- TestComplete命令列執行命令列
- 收集 Linux 命令列執行的命令Linux命令列
- 【Mongo】shell命令列模式執行mongo命令Go命令列模式
- mac中用命令列執行mysqlMac命令列MySql
- IDEA 執行 XXX 時報錯命令列過長,縮短命令列並重新執行Idea命令列
- python實現批次執行命令列Python命令列
- 教你在命令列下執行PHP和MySQL命令列PHPMySql
- CMD執行命令列時卡住的問題命令列
- laravel:從linux命令列執行commandLaravelLinux命令列
- shell指令碼命令 執行python檔案&python命令列執行python程式碼指令碼Python命令列
- 通過RFT命令列執行測試指令碼命令列指令碼
- 【Java】【轉】在命令列中編譯和執行javaJava命令列編譯
- 命令執行漏洞
- Docker執行命令Docker
- jmeter學習指南之非GUI命令列執行詳解JMeterGUI命令列
- ubuntu下如何用命令列執行deb安裝包Ubuntu命令列
- yii2.0檔案如何在php命令列中執行PHP命令列
- NUnit的原理
- 命令列執行python時找不到模組怎麼解決命令列Python
- 在 Linux 命令列中使用和執行 PHP 程式碼(一)Linux命令列PHP
- 在 Linux 命令列中使用和執行 PHP 程式碼(二)Linux命令列PHP
- Docker命令-docker exec-在執行的容器中執行命令Docker
- cmd命令列下用命令執行SQL指令碼到SQL Server資料庫中命令列SQL指令碼Server資料庫
- Java執行cmd命令Java
- 遠端執行命令
- .net執行cmd命令
- 如何執行maven和執行maven的命令。Maven
- iOS 多執行緒--GCD 序列佇列、併發佇列以及同步執行、非同步執行iOS執行緒GC佇列非同步
- Windos bat批處理指令碼,判斷是終端命令列執行,還是雙擊執行BAT指令碼命令列
- 命令列下執行 PHP artisan 相關命令沒有效果且沒有錯誤提示命令列PHP
- Kettle筆記3-三種執行方式:圖形/命令列/API筆記命令列API
- 非專案目錄下命令列執行go程式遇到的問題命令列Go
- Windows下Pycharm執行命令列語句結果亂碼問題��Ȩ��Ӧ��WindowsPyCharm命令列
- 【機器學習】使用Octave執行命令機器學習
- 監控 redis 執行命令Redis
- PHP命令執行集錦PHP
- 跟蹤執行命令T