2012-10-11 129 views
8

我想知道如何處理Junit中的受保護方法。Junit受保護的方法

假設我想測試一個名爲A的類,它具有受保護的成員和構造函數。 我明白,爲了測試類A,我應該編寫另一個名爲ATest的類,它可能會擴展TestCase(這在Junit3中應該是強制性的)。因爲我想測試受保護的方法,並且因爲A具有受保護的構造函數,所以我的測試類ATest還應擴展實現該方法的類A,以便能夠創建該類並訪問該方法。

可以從這兩個類的雙重繼承一個很好的解決方案?

P.S我已經知道在Junit 4中可以避免從TestCase繼承。

+0

你能解釋爲什麼你想擴展TestCase嗎?我認爲你應該能夠做你正在說的內容並且擴展A來宣傳它的保護方法。我已經與NUnit一起用餐,它工作得很好 – cowboydan

+0

[junit&java:測試非公開方法]的可能重複(http://stackoverflow.com/questions/440786/junit-java-testing-non-public-方法) –

回答

17

要訪問A的受保護成員,只需將AATest放在同一個包中。

+1

+1 - 這是測試受保護和程序包私有(默認)方法的通用慣例。 –

1

Java不允許多次繼承實現。你可以實現多個接口。

我寧願使用反射來獲取我不想讓客戶知道的測試方法。也適用於私人方法。