组织JUnittesting项目

你认为在项目中组织JUnittesting的最佳实践是什么?为什么? 例如,你是否把你的testing放在他们testing的类旁边? 你把它们放在一个单独的,但并行的包装结构? 你完全使用不同的组织战略吗?

我使用了一个独立但并行的包结构,原因有几个。

  1. 它使testing按照与应用程序代码相同的方式进行组织。
  2. 我可以轻松构build分发的应用程序文件。
  3. testing代码仍然可以访问我的应用程序代码。
  4. 它不像testing代码与应用程序代码混合那样混乱。

我把我的testing放在一个独立但类似/并行的包装结构中。 这就是Maven喜欢的东西,它也适用于IDE。 我喜欢这种方式,因为我的testing代码没有与我的应用程序代码混淆在一起,但是我仍然可以访问包私有的东西来进行嘲笑和状态validation。

只要使用Maven 。 使用maven,您可以为您的项目创build一个默认结构:

mvn archetype:create -DgroupId=com.yoyodyne -DartifactId=UberApp 

这将创build包含unit testing空间的Maven标准目录布局以及您的主项目。 使用maven,然后可以运行unit testing,而不需要将其打包到jar中,并且可以构build一个仅包含应用程序的jar。 运行,testing和编译时也可以有不同的类path和不同的依赖关系。

我发现这里很less有人使用Maven(或者至less是Ant,尽pipe我更喜欢Maven来处理依赖关系),这让我感到很困扰。

我尊重Maven项目结构,即使我没有在项目中使用Maven,只是因为我习惯了。 最佳做法是使用单独的源文件夹,该文件夹尊重与主源文件夹相同的包结构。

您的testing特定源代码(您只能用于testing的实用程序)应放在那里,如果您打算将它们与应用程序运行时代码一起使用,则将其移至主源文件夹中。 这个想法是很好的分离,正如你通过分离持久性和控制效率来分解效率一样。

正如蜥蜴比尔所说:

它有一个并行的结构,以便1)我可以运送一个src.zip或src.tar.gz,并省略unit testing2)在版本控制系统级别,你可以挂钩谁更改源代码和谁只更改unit testing

“坏处”
如果源代码和unit testing都在同一个包中(即,在准备.JAR并密封之前,需要删除unit testing),那么不能封装JAR文件,