2016-09-16 59 views
0

出於測試目的,有時我想看看我的代碼如何處理來自代碼各個部分的異常運行時異常。Java:我可以在運行時將運行時異常注入任意類方法嗎?

例如,假設我有一個像這樣的方法:

public int getSum(int x, int y) 
{ 
    return x + y; 
} 

有沒有辦法對我來說,只要造成它拋出一個異常,而不是返回一個有效的結果稱這種方法失敗?我知道我可以添加明確的代碼來做到這一點,但我想知道是否有可能用一個在運行時拋出異常的新方法替換任何類中的方法,或者類似的東西;-)有點像how Mockito can do the following

doThrow(new Exception()).when(mockedObject).methodReturningVoid(...); 

我喜歡的任何解決方案,不需要任何額外的工具 - 只要標準JVM。謝謝!

+0

爲什麼在運行時需要這個? –

+2

請記住,運行時異常通常旨在溝通軟件中出現錯誤的錯誤,例如未正確處理空值。這樣的方法沒有任何東西可以預料會拋出異常,我想不出一個很好的理由去模擬它。 – chrylis

+0

@TimBiegeleisen - 我的意圖是導致部分代碼以意想不到的方式失敗。有點像[Chaos Monkey](http://whatis.techtarget.com/definition/Chaos-Monkey)。我不能隨意開始添加代碼,以拋出隨機異常到我們代碼的關鍵部分,因爲我沒有擁有所有它 - 我只在一個團隊中......而其他團隊擁有主要部分。但是,如果我可以通過某些方式在代碼中僞造代碼,那麼我可以從我自己的代碼庫中僞造他們的代碼,然後我可以測試他們可能沒有想到的失敗方案。我確實知道這可能是在單元測試中完成的,但這裏可能有些優點 –

回答