2013-08-26 168 views
3

關於如何單元測試線程代碼,但不在單元測試方法內的產卵線程上測試同步機制,有很多信息。在單元測試中產卵線程

[TestMethod] 
public void TestDiscountThreading() { 
    Thread[] threads = new Thread[50]; 
    for (int i = 0; i < threads.Length; i++) { 
    threads[i] = new Thread(PriceThread); 
    threads[i].Start(); 
    } 

    for (int i = 0; i < threads.Length; i++) 
    threads[i].Join(); 
} 

我想stresstest如果裏面PriceThread代碼同步正確實施,但該方法運行的每一次我得到的錯誤「而測試正在運行在代理過程中停止」。是否有可能在單元測試中產生線程,或者在這裏可能會出錯?

即時通訊使用Visual Studio 2010與運單元測試框架

+1

這甚至聽起來不像是對我的單元測試。更像負載測試或功能測試。 –

+0

您無法測試該同步是否正常工作,只發現它不*正常工作。 –

+0

我同意,它不是100%有用的測試同步,因爲它在實時應用程序中的不可預測性如何運行代碼,但產生100個線程調用相同函數的測試應該告訴 – Laurijssen

回答

1

這是不是一個真正的完整的答案,但我會建議你看看VS 2010 Test Runner error "The agent process was stopped while the test was running."的想法。

你知道在代碼中拋出異常的地方嗎?

編輯與答案:

這是結果時相比,主線程的線程上引發未處理的異常。這裏就是這種情況,即沒有問題與循環或線程本身。

+0

測試代碼本身和在代碼被測試 – Laurijssen

+0

在打開拋出的異常之後,它在測試代碼本身中顯示一個空引用異常.....我非常忙於整個線程的事情,我有一個普通代碼的盲點。感覺很愚蠢,三個月的療法應該訣竅 – Laurijssen

+0

@ServéLaurijssen嗯,那麼問題解決了嗎? – flindeberg