簡體   English   中英

在發布模式下運行NUnit測試

[英]Run NUnit tests in release mode

我有個問題。

#if DEBUG
        ca.ConveyancingAttorneyID = "C0B68DC3-C396-4264-880B-1A699C53A8CE";
        ca.ConveyancingFirmID = "C0B68DC3-C396-4264-880B-1A699C53A8CE";
#endif

在調試模式下運行時,我們對標識符進行硬編碼。 在發行版中,顯然是動態設置的。

現在,當涉及到對映射代碼進行單元測試時,我必須這樣做:(最初我只是測試了“發布案例”,然后在調試模式下總是失敗了)

#if RELEASE
        Guid id = new Guid("1A92CE5A-D956-486B-9B65-0A3630EF0285"); 
#endif
#if DEBUG
        Guid id = new Guid("C0B68DC3-C396-4264-880B-1A699C53A8CE"); 
#endif

這是不理想的。 而且必須記住(並提醒隊友)始終在發布中運行單元測試也很麻煩。 我們沒有持續的集成設置,因此測試僅在本地運行。

有沒有一種方法可以強制NUnit / Visual Studio Testrunner / Resharper Testrunner始終以發布模式運行測試? 還是有更好的方法來解決此問題,請記住,解決方案中這類“ #if DEBUG”代碼塊非常豐富。

如果必須運行Release,請使用參數/ config:Release

我不確定我們對您的項目的結構是否足夠了解,無法以適當的方式回答這個問題。 它基本上取決於您在哪里以及如何使用這些值。

理想情況下,您應該通過接口從某個地方獲取這些ID。 這樣一來,您就可以偽造並在該接口后面切換實現,從而可以在需要測試使用值的邏輯時返回硬編碼的偽值。

您可以設置配置選項,以指定是使用實際實現,還是設置虛擬數據提供程序以允許進行切換而無需重新編譯。

更新:由於上述內容並不是您對特定問題的真正答案,因此,這是另一種嘗試:在Resharper > Options > Tools > Unit Testing ,有一個選項Run tests from Resharper > Options > Tools > Unit Testing您可以在其中指定要使用的文件夾,而不是默認項目輸出文件夾。

這可能需要很長時間,但是即使主項目構建配置設置為Debug,也可以配置VS將項目的Release版本構建到某個特定的文件夾,並參考該版本進行測試。

請記住,在使用參數(例如/ config:Xeon的答案中的版本)時,區分大小寫很重要,否則會產生誤導性錯誤:

Invalid : Path_to_your_file
File type is not supported error

(信譽不足,無法發表評論)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM