我有一個測試線程代碼的單元測試。 我正在調用一個在不同線程中調用的方法,但是當執行測試時,將執行生產代碼而不是我的假方法。 我測試過,如果我在單元測試的同一個線程中運行代碼,我的假方法被調用。 這是已知的限制嗎? 謝謝VisualStudio Shim不適用於不同的線程
1
A
回答
2
好吧,事實證明ShimsContext在我的線程方法被調用之前被處置。 VS僞造是全球意義它適用於所有線程。
0
我發現,添加一個較長的睡眠解決問題,就像你說的,當墊片它自身已經對子級被稱爲ShimsContext被佈置:
using (ShimsContext.Create())
{
bool shimcalled = false;
ShimClass1 h = new ShimClass1();
ShimClass1.MyStaticMethodToBeShimed =() =>
{
shimcalled = true;
};
new Class1().MyMethodUnderTest();
Thread.Sleep(1000); //or wait with a while loop till shimcalled = true:
//int couter = 0; while (counter < 100 && shimcalled == false) { counter++; Thread.Sleep(10);}
Assert.IsTrue(shimcalled);
}
相關問題
- 1. Debug.WriteLine不適用於不同的線程
- 2. VisualStudio 2017重構不適用於F#
- 3. notifyDataSetChanged不適用於線程
- 4. Log4Net適用於VisualStudio調試/發佈,但不適用於部署
- 5. cv2適用於線程,但不適用於進程
- 6. WritableBitmap不適用於單獨的線程?
- 7. iphone:performSelector:withObject:afterDelay:不適用於後臺線程?
- 8. JNI不適用於AppKit線程
- 9. Kafkaconsumer不適用於多線程訪問
- 10. grails sessionFactory.currentSession.flushMode不適用於線程?
- 11. Android線程 - 不適用於我
- 12. 路線不適用於像
- 13. 不ITextTemplatingEngineHost取決於VisualStudio的
- 14. 條件變量程序適用於2個線程但不適用於3
- 15. 相同的代碼不適用於不同於80的端口
- 16. registerOnSharedPreferenceChangeListener不適用於在不同過程中所做的更改
- 17. c#同樣的代碼適用於應用程序,但不適用於.dll
- 18. 不同的應用程序名稱可能適用於不同的國家?
- 19. 不同的線程處於休眠
- 20. CUDA - 相同的算法適用於CPU,但不適用於GPU
- 21. 套接字編程只適用於同一系統,不適用於不同的系統
- 22. 不同線程
- 23. MVC5 URL不匹配適用於localhost,但不適用於遠程機器
- 24. 春季休眠鎖是否適用於不同機器上的其他線程?
- 25. 適用於不同語言的菜單
- 26. 適用於不同視圖的CAGradientLayer
- 27. 適用於不同環境的Jboss-web.xml
- 28. iTextSharp的不同幅度適用於
- 29. 適用於不同環境的System.Data.SQLite
- 30. package.json適用於不同的環境?
我記錄了這個錯誤今天在微軟連接。我無法在互聯網上找到任何有關在多線程環境下工作的墊片。 – Peter
我可以得到網址嗎?我相信有一種方法來投票連接的錯誤 – user156144
http://connect.microsoft.com/VisualStudio/feedback/details/806872/shims-does-not-working-with-a-threadpool-queueuserworkitem – Peter