2013-03-25 35 views
2

我需要確定在接收到kill信號時是否調用某個類的特定方法。該方法執行一些清理操作,在關閉鉤子中調用。在系統關閉時調用JUnit測試方法

我試過使用EasyMock來期望這個方法在執行一個Process之後被調用,該方法啓動這個類的主要方法,然後調用Process destroy方法作爲測試操作的一部分,但不知怎的,這個類的模擬沒有連接到我啓動的過程。

如何在接收到關閉信號時測試類的方法?我想這樣做而不必修改類的實現來測試這個類。

回答

1

JVM負責執行已經註冊的關閉掛鉤。由於您不是JVM的開發人員,因此您必須相信它確實如此。所以你會想測試你的關機掛鉤已被註冊。您可以通過檢查removeShutdownHook的返回值來做到這一點。但是有一個實際的障礙:你可能不想在JUnit退出時運行你的關閉鉤子,所以你不應該在單元測試代碼中註冊關閉鉤子。所以我不認爲你可以。

你可以做的最好的是單元測試你的關機鉤使用的代碼。

+1

看到退出應用程序的測試方法有點相關的問題:http://stackoverflow.com/questions/309396/java-how-to-test-methods-that-c​​all-system-exit – Raedwald 2013-05-25 12:20:03