2015-01-15 55 views
4

我目前正在爲面向對象的Matlab編寫的項目實施單元測試。如何使用matlab.unittest測試私有方法?

從設計上講,它是有意義的,我無法從測試類的測試方法中訪問類的私有方法。

是否有任何解決方法直接測試這些方法而不公開?

+0

以下是類似的問題/答案(http://stackoverflow.com/questions/25313017/how-to-make-internal-helper-functions-testable/25314333#25314333),這裏是另一個(http:/ /然而,在兩種情況下,兩者都是相同的,但是在兩種情況下都是不同的。在這些情況下,它會將您的實現細節泄漏到界面中。例如,子類不能再編寫一個同名的方法,如果它是受保護但未被密封的,它們甚至可以覆蓋可能非常危險的行爲。 –

回答

4

如果您需要直接測試它們,最簡單的方法就是讓它們公開。

另一種方法是讓它們受到保護,然後讓一個子類帶有一些額外的公共方法,這些方法調用受保護的方法來測試它們(也許每個測試方法可能有一個方法,並且它們只是通過通過直接呼叫保護的)。

然而,問題類型的前提與單元測試的想法背道而馳:你應該測試你的類提供的公共接口/合約,這只是它的公共方法。只要公共方法經過充分測試,任何私有方法都只是實現細節。

另一種觀察事物的方式可能是,如果您的方法確實需要測試,則可能需要將其移至自己的類中。