2014-03-05 47 views
1

我試圖找到一些用於測試命名Java包的最佳實踐。JUnit包命名的最佳實踐?

測試上:

com.example.MyClass 

應該是:我會一起思考的東西

com.example.test.MyClassTest 
+0

(雖然這個*在某種程度上是一個意見問題,但我不認爲這是任意的 - 因此我的回答是代替近距離投票,儘管這本身就是一個判斷電話......) –

+0

這個想法不是開始巨魔辯論,但調查開發人員正在做什麼。 – jgp

回答

7

通常我把測試類的相同包,但在不同的源根。除了其他任何東西,這允許您測試具有默認可見性的成員(實際上是類)。有時候,我甚至會製作一些方法,這些方法本來是私有的,包級別使測試更容易,並且知道它只會產生有限的影響。這很大程度上取決於您正在開發的環境。 (我的大部分代碼都是在可信的環境下編寫的;我想限制對優雅的訪問,但我並不擔心任何人都會主動嘗試使用他們不應該使用的方法,而我會使用註釋來表示意圖。 )

您絕對需要一種簡單的方法將您的測試類從生產類中分離出來,既可用於部署目的,也可讓您在適當時專注於「僅生產代碼」。但是在測試和生產代碼中使用相同的包裝聲明並沒有什麼不利之處。

+0

+1:它避免了很多可見性問題 – Julien

+0

寫了我的答案,因爲我認爲你的答案有點短。編輯後,它是一個明確的+1 ;-) –

+0

我看到的唯一風險是覆蓋文件...不是? – jgp

1

最好的選擇之一是將測試放在另一個源文件夾中。通過這種方式,你可以很容易地從測試中分離出實際來源,例如當建立一個發佈。看看Mavens default directory layout。即使沒有Maven,propper IDE也應該能夠處理不同的源文件夾。

至於軟件包:如果您有兩個不同的源文件夾,您可以將測試類放在同一個軟件包中。這有幾個優點,比如beeing能夠從您的測試中訪問受封裝保護的成員,或者使用像MoreUnit這樣的好插件。