2016-09-16 60 views
1

我正在開發包含junit測試代碼的項目。在某些地方,我已經看到該方法被聲明爲默認(無訪問說明符),並且他們正在使用它在junit中進行代碼覆蓋。任何人都可以知道哪一個是從以下選項單元測試代碼的最佳方法。增加僅適用於junit的方法範圍建議與否?

  1. 使方法爲默認(無訪問符)。因爲對於junit我們暴露了課堂以外的方法。最終我們是 暴露它只爲junit。
  2. 我們可以使用反射來測試這段代碼。因爲junit不會在生產環境中交付。
+1

爲什麼你需要測試私有方法? –

+0

你有沒有試過PowerMockito? – Celt

+0

相關:http://stackoverflow.com/questions/6913325/annotation-to-make-a-private-method-public-only-for-test-classes –

回答

1

從本質上說,這是風格問題;因此它比真正的技術原因更關注意見。我的「技術」的想法在這裏:

  • 我們偶爾這樣做 - 有時我們添加干將對我們的生產代碼,允許內部狀態的檢查。僅僅因爲這是一種簡單直接的檢索信息的方式。
  • 有了這些吸氣器,我可以觸發一個操作;然後對內部狀態做出某種斷言。
  • 另一種方法是在我們的測試用例中使用諸如反射等瘋狂的東西。

事情是這樣的:我們有一個慣例,把一個簡單的javadoc放在這樣的包保護方法之上,就像/ **單元測試* /。而且我們在我們的團隊中同意這對我們來說「夠好」。但當然:在一定程度上,這是不是一個很好的模式:當你做一些東西內部可以從以外觀察;所以你以某種方式將實現細節的某些部分外部化。

換句話說:在這裏不要過分。將內部事物看作是實現的核心(也許工作在非常高的抽象層次上)是公平的;但你不想讓「外太多」的東西可見。人們可能會錯誤地認爲這些東西屬於你班級的「官方合同」!

但正如其他人所說,你可能想要看看Mockito可以替你做些什麼。