簡體   English   中英

NUnit首先在Resharper測試運行器中使用Entity Framework測試非常慢

[英]NUnit first test very slow with Entity Framework in Resharper test runner

使用Entity Framework 4.1時,第一個NUnit測試的緩慢是否有任何解決方案?

我發現第一次測試大約需要10秒鍾,其余的測試都在0.01秒內完成(根據Resharper Show Time選項)

如果我使用NUnit GUI運行測試,那么第一次測試需要10秒,但是如果我重新運行整套測試運行時間不到0.5秒...... 直到我重新編譯解決方案

我還有一個在IIS中托管的WCF服務的NUnit測試,它調用EF,第一個在大約3秒內完成。 然后,如果我重新運行測試,它會降低到1秒,正如預期的那樣,在重新編譯時,第一次會回到3秒。

但是最初的NUnit測試是針對具有調用EF的方法的類庫,總是大約10秒標記, 即沒有減少時間

好吧,我知道IIS正在做“某事” [什么?] ,但在這兩種情況下我都在使用NUnit來進行呼叫......為什么第一次呼叫需要10秒以上,另一次是3秒然后是1秒第二次接下來的電話?

為了讓我感到困惑,我編寫了一個簡單的控制台應用程序,它可以調用正在測試的類中的一個EF使用方法,並且它可以在1秒內完成。

UPDATE ...重寫相同的測試,因為MSTest測試在大約3.5秒內完成了第一次測試,這與NUnit GUI運行器中的第一次測試運行相當,所以問題似乎是NUnit在Visual中的Resharper測試運行器工作室

更新2 ...是的,問題確實似乎是Resharper測試運行器。 TestDriven.NET和Visual Nunit 2010都更快。

更新3 ...它現在以JetBrains作為問題記錄

這是常見的行為,因為第一個測試必須編譯“EF視圖” - 這是在您第一次使用模型中映射的任何內容時發生的。 然后緩存並重用相同的編譯視圖。 它可以避免,但它需要您手動生成視圖代碼( 通過使用EdmGen.exe )將該代碼添加到您的項目並與您的解決方案一起編譯。 每次在EDMX中更改任何內容時都必須執行此操作,除非您將其作為項目中的某些預構建操作(這將反過來減慢構建速度)。

各種跑步者之間的差異可能是由於他們正在使用的平台(x64與x86)。 在x64模式下啟動EF要慢得多。

暫無
暫無

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

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